2016-05-01 8 views
0

フラグメント内にあるlistView用のカスタムアダプタがあります。何が原因なのかわからないというエラーが出ています。ここ フラグメント内のリストビューのアダプタを設定する

はSummerJobsFragment.javaです:

import android.app.Fragment; 
import android.app.FragmentManager; 
import android.content.Context; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.BaseAdapter; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 
import android.widget.TextView; 
import android.app.ListActivity; 

import java.util.ArrayList; 

public class SummerJobsFragmnet extends Fragment { 

    public SummerJobsFragmnet() { 
     // Required empty public constructor 
    } 

    // TODO: Rename and change types and number of parameters 
    public static Fragment getInstance() { 
     Fragment fragment = new SummerJobsFragmnet(); 
     return fragment; 
    } 

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

    } 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     MainActivity activity = (MainActivity) getActivity(); 
     String [] places = activity.getAllPositionsNamesPhone().toArray(new String[activity.getAllPositionsNamesPhone().size()]); 

     ListView list = (ListView) getView().findViewById(R.id.joblistView); 
     int [] prgmImages={R.mipmap.ic_launcher}; 
     list.setAdapter(new CustomListAdapter(this,places,prgmImages)); 
    } 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     return inflater.inflate(R.layout.displayjobs, container, false); 
    } 
} 

、ここCustomListAdapterです:

import android.widget.BaseAdapter; 

     import android.content.Context; 
     import android.view.LayoutInflater; 
     import android.view.View; 
     import android.view.View.OnClickListener; 
     import android.view.ViewGroup; 
     import android.widget.BaseAdapter; 
     import android.widget.ImageView; 
     import android.widget.TextView; 
     import android.widget.Toast; 

public class CustomListAdapter extends BaseAdapter { 
    String [] result; 
    Context context; 
    int [] imageId; 
    private static LayoutInflater inflater=null; 
    public CustomListAdapter(MainActivity mainActivity, String[] places, int[] prgmImages) { 
     // TODO Auto-generated constructor stub 
     result=places; 
     context=mainActivity; 
     imageId=prgmImages; 
     inflater = (LayoutInflater)context. 
       getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 
    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return result.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    public class Holder 
    { 
     TextView tv; 
     ImageView img; 
    } 
    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     Holder holder=new Holder(); 
     View rowView; 
     rowView = inflater.inflate(R.layout.display_job_cell_view, null); 
     holder.tv=(TextView) rowView.findViewById(R.id.Itemname); 
     holder.img=(ImageView) rowView.findViewById(R.id.icon); 
     holder.tv.setText(result[position]); 
     holder.img.setImageResource(imageId[position]); 
     rowView.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Toast.makeText(context, "You Clicked "+result[position], Toast.LENGTH_LONG).show(); 
      } 
     }); 
     return rowView; 
    } 

} 

、ここでエラーのlogcatです:

Click here for logCat

+0

ほとんどの場合にエラー

list.setAdapter(new CustomListAdapter(this,places,prgmImages)); 

を投げている、これらは同じ長さを持っていません。 'String [] places、int [] prgmImages' –

+0

' getAllPositionsNamesPhone'がListを返す場合、それをなぜArrayに変換するのはなぜですか? AdapterクラスのListを使用するだけです。 –

答えて

0

ますこれらのリストがdiであるために、範囲外のインデックスを取得しています異なるサイズ。

String [] places = activity.getAllPositionsNamesPhone().toArray(new String[activity.getAllPositionsNamesPhone().size()]); 

    int [] prgmImages={R.mipmap.ic_launcher}; 

そして、あなたのアダプタはこれらの行

holder.tv.setText(result[position]); 
    holder.img.setImageResource(imageId[position]); 
+0

これは意味があります。だから、もし私がすべてのリスト項目に対して同じイメージを設定したいのであれば、どうすればいいのですか? – dadadodo

+0

私はそれを考え出しませんでした。あなたの時間をありがとう! – dadadodo

関連する問題