2016-09-29 7 views
0

私は新しいアンドロイドの開発者です。コードでの経験はもうありません。URLからスピナーと解析データを作成し、スピナーに挿入したいと考えています。情報:すべてのアクティビティとタブにメニューがありますホーム活動、あなたは私のコードに拡張を持っている場合、私は私の主な問題をお知らせください共通メニューの基本クラスの活動をしてください作成:スピナーは私のデータを示して、私にここで設定したアダプタAndroid Spinner Adapter

基本活動と例外エラー与えない:

import android.os.Bundle; 
import android.support.annotation.LayoutRes; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.widget.LinearLayoutCompat; 
import android.view.View; 
import android.support.design.widget.NavigationView; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.FrameLayout; 
import android.widget.LinearLayout; 

public class BaseActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    protected LinearLayout fulllayout; 
    protected FrameLayout actContent; 

    @Override 
    public void setContentView(@LayoutRes int layoutResID) { 
     //For make Menu RTL 
     getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL); 

     fulllayout = (LinearLayout) getLayoutInflater().inflate(R.layout.activity_base, null);  
     actContent = (FrameLayout) fulllayout.findViewById(R.id.act_content);  
     getLayoutInflater().inflate(layoutResID, actContent, true); 

     super.setContentView(fulllayout); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState);  
    } 

    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.END)) { 
      drawer.closeDrawer(GravityCompat.END); 
     } else { 
      super.onBackPressed(); 
     } 
    }  

    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 

     if (id == R.id.nav_camera) { 
      // Handle the camera action 
     } else if (id == R.id.nav_gallery) { 

     } else if (id == R.id.nav_slideshow) { 

     } else if (id == R.id.nav_manage) { 

     } else if (id == R.id.nav_share) { 

     } else if (id == R.id.nav_send) { 

     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.END); 
     return true; 
    } 
} 

ここでは、ホーム活動:

ここ市ビーンズ:

package com.arabnewtech.a22.zoodrealstate.Beans; 

import java.io.Serializable; 

/** 
* Created by abozaid on 27/09/16. 
*/ 
public class CityBeans implements Serializable { 

     private String id; 
     private String name; 

     public String getId() { 
       return id; 
     } 

     public void setId(String id) { 
       this.id = id; 
     } 

     public String getName() { 
       return name; 
     } 

     public void setName(String name) { 
       this.name = name; 
     } 
} 

ここ市アダプタ:

package com.arabnewtech.a22.zoodrealstate.Adapters; 

/** 
* Created by abozaid on 28/09/16. 
*/ 
import java.util.ArrayList; 
import android.app.Activity; 
import android.content.Context; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 

import com.arabnewtech.a22.zoodrealstate.Beans.CityBeans; 
import com.arabnewtech.a22.zoodrealstate.Home; 
import com.arabnewtech.a22.zoodrealstate.R; 

public class CityAdapter extends ArrayAdapter<String> { 

    private Activity activity; 
    private ArrayList data; 
    CityBeans tempValues=null; 
    LayoutInflater inflater; 

    /************* CustomAdapter Constructor *****************/ 
    public CityAdapter(
      Home activitySpinner, 
      int textViewResourceId, 
      ArrayList objects 
    ) 
    { 
     super(activitySpinner, textViewResourceId, objects); 

     /********** Take passed values **********/ 
     activity = activitySpinner; 
     data  = objects; 

     /*********** Layout inflator to call external xml layout() **********************/ 
     inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    } 

    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     return getCustomView(position, convertView, parent); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     return getCustomView(position, convertView, parent); 
    } 

    // This funtion called for each row (Called data.size() times) 
    public View getCustomView(int position, View convertView, ViewGroup parent) { 
     Log.i("Iammmmmmmmmmmmmmmmmm","Herrrrrrrrrrrrrrr"); 
     /********** Inflate spinner_rows.xml file for each row (Defined below) ************/ 
     View row = inflater.inflate(R.layout.spinner_rows, parent, false); 

     /***** Get each Model object from Arraylist ********/ 
     tempValues = null; 
     tempValues = (CityBeans) data.get(position); 

     TextView label  = (TextView)row.findViewById(R.id.company); 
     TextView sub   = (TextView)row.findViewById(R.id.sub); 

     if(position==0){ 
      // Default selected Spinner item 
      label.setText("Please select Name"); 
      sub.setText(""); 
     } 
     else 
     { 
      // Set values for spinner each row 
      label.setText(tempValues.getId()); 
      sub.setText(tempValues.getName()); 

     } 

     return row; 
    } 
} 

ここFragment_home.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.arabnewtech.a22.zoodrealstate.Home$PlaceholderFragment"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:id="@+id/spinner1"> 

     <Spinner 
      android:id="@+id/cityID" 
      android:layout_width="0dp" 
      android:layout_weight="1" 
      android:layout_height="wrap_content" 
      android:layout_margin="5dp"></Spinner> 

     <Spinner 
      android:id="@+id/zoneID" 
      android:layout_width="0dp" 
      android:layout_weight="1" 
      android:layout_margin="5dp" 
      android:layout_height="wrap_content"></Spinner> 
    </LinearLayout> 
    <LinearLayout 
     android:id="@+id/spinner2" 
     android:layout_below="@id/spinner1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 

     <Spinner 
      android:layout_width="0dp" 
      android:layout_weight="1" 
      android:layout_height="wrap_content" 
      android:layout_margin="5dp"></Spinner> 

     <Spinner 
      android:layout_width="0dp" 
      android:layout_weight="1" 
      android:layout_margin="5dp" 
      android:layout_height="wrap_content"></Spinner> 
    </LinearLayout> 
    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/ColorYellow" 
     android:layout_below="@+id/spinner2" 
     android:text="بحث"/>  

    <TextView 
     android:paddingTop="20dip" 
     android:paddingLeft="20dip" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/output" /> 

</RelativeLayout> 

ここSpinner_Row:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:padding="3dip" 
    > 
    <TextView 
     android:padding="3dip" 
     android:layout_marginTop="2dip" 
     android:textColor="@color/colorPrimary" 
     android:textStyle="bold" 
     android:id="@+id/company" 
     android:layout_marginLeft="5dip" 
     android:text="sfsdf" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
    <TextView 
     android:padding="2dip" 
     android:textColor="@color/ColorYellow" 
     android:layout_marginLeft="5dip" 
     android:id="@+id/sub" 
     android:text="sfsf" 
     android:layout_below="@+id/company" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
</RelativeLayout> 

ログキャットアウトは入れ:

FATAL EXCEPTION: main 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.arabnewtech.a22.zoodrealstate/com.arabnewtech.a22.zoodrealstate.Home}: java.lang.NullPointerException                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295) 
                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) 
                        at android.app.ActivityThread.access$700(ActivityThread.java:159) 
                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 
                        at android.os.Handler.dispatchMessage(Handler.java:99) 
                        at android.os.Looper.loop(Looper.java:176) 
                        at android.app.ActivityThread.main(ActivityThread.java:5419) 
                        at java.lang.reflect.Method.invokeNative(Native Method) 
                        at java.lang.reflect.Method.invoke(Method.java:525) 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 
                        at dalvik.system.NativeStart.main(Native Method) 
                        Caused by: java.lang.NullPointerException 
                        at com.arabnewtech.a22.zoodrealstate.Home.setListData(Home.java:123) 
                        at com.arabnewtech.a22.zoodrealstate.Home.onCreate(Home.java:89) 
                        at android.app.Activity.performCreate(Activity.java:5372) 
                        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) 
                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257) 
                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)  
                        at android.app.ActivityThread.access$700(ActivityThread.java:159)  
                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)  
                        at android.os.Handler.dispatchMessage(Handler.java:99)  
                        at android.os.Looper.loop(Looper.java:176)  
                        at android.app.ActivityThread.main(ActivityThread.java:5419)  
                        at java.lang.reflect.Method.invokeNative(Native Method)  
                        at java.lang.reflect.Method.invoke(Method.java:525)  
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)  
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)  
                        at dalvik.system.NativeStart.main(Native Method) 
+1

なければならないlogcat出力 –

+0

_italic_を投稿私は –

+0

はあなたがデバッグしているものを確認することができ、それを追加しましたこの行の内容 '' 'JSONArray jo_result = jo.getJSONArray(" result ");' '' –

答えて

0

をここであなたのスピナーproblem.Thisのためのソリューションは、作業コードです。

android-spinner-example

独自のURLを持つURLを交換し、あなたのJSONレスポンスに応じonrespone機能を変更する必要があります。

+0

はい新しいプロジェクトだが、私のプロジェクトがうまくいかない理由は分からない!! –

+0

唯一の問題は、私はすでに答えに言及しているように、私はursonson respone.Manage ur json形式のonresponse関数を見てきました。 – Adi

+0

私はjsonデータなしで試した。 for(int i = 0; i <11; i ++){ final SpinnerModel sched = new SpinnerModel(); sched.setCompanyName( "Company" + i);sched.setUrl( "http:\ www。" + i + ".com"); CustomListViewValuesArr.add(sched); } –

0

私はあなたのコードを複製した後に問題が見つかりました。あなたのコードのpublic View getCustomView(int position, View convertView, ViewGroup parent)方法で...

あなたは

View row = inflater.inflate(R.layout.fragment_home, parent, false); 

を膨張されている。しかし、それは

View row = inflater.inflate(R.layout.spinner_row, parent, false); 
+0

これは問題ですが、何かテストのために置き換えて、もう一度同じ例外を返すと、私はこのコードを試したのでベースアクティビティからの継承に関する問題を感じますクリーンなプロジェクトで正常に動作していれば、まだ問題がある場合は –

+0

、githubにアップロードして私にリンクを与えてください。何が間違っているのが表示されますか –

+0

Okey、このリンクを確認してください [github link](https://gist.github.com/Mohammed2050/7e04d8f76772c2dd53f0c2d06df3e7f9) –