2011-12-15 8 views
1

複数のアイテムリストビューからデータを取得しようとしていますが、onListItemClickで取得しようとするとエラーが発生します。複数のアイテムListViewからデータを取得していますか?

それは時にメソッドを作成するために私を求めているように見える:

i.putExtra("title", this.getItem(position).getTitle()); 

が呼び出されます。

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.list); 
    mInflater = (LayoutInflater) getSystemService(
    Activity.LAYOUT_INFLATER_SERVICE); 
    data = new Vector<RowData>(); 
    for(int i=0;i<title.length;i++){ 
    try { 
     rd = new RowData(i,title[i],detail[i]); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
     data.add(rd); 
    } 
     CustomAdapter adapter = new CustomAdapter(this, R.layout.list, R.id.title, data); 
     setListAdapter(adapter); 
     getListView().setTextFilterEnabled(true); 
    } 


     public void onListItemClick(ListView parent, View v, int position, 
     long id) { 


       Intent i = new Intent(this,ShowDetails.class); 
       Bundle bundle = new Bundle(); 
       i.putExtra("title", this.getItem(position).getTitle()); 
       i.putExtra("title", this.getItem(position).getDetail()); 
       setResult(ShowDetails.RESULT_OK, i); 
       finish(); 
     } 


private class CustomAdapter extends ArrayAdapter<RowData> { 
    public CustomAdapter(Context context, int resource, 
         int textViewResourceId, List<RowData> objects) {    
super(context, resource, textViewResourceId, objects); 
} 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder = null; 
     TextView title = null; 
     TextView detail = null; 
     ImageView i11=null; 
     RowData rowData= getItem(position); 
     if(null == convertView){ 
      convertView = mInflater.inflate(R.layout.list, null); 
      holder = new ViewHolder(convertView); 
      convertView.setTag(holder); 
} 
      holder = (ViewHolder) convertView.getTag(); 
      title = holder.gettitle(); 
      title.setText(rowData.mTitle); 
      detail = holder.getdetail(); 
      detail.setText(rowData.mDetail);              
      i11=holder.getImage(); 
      i11.setImageResource(imgid[rowData.mId]); 
      return convertView; 
} 
      private class ViewHolder { 
      private View mRow; 
      private TextView title = null; 
      private TextView detail = null; 
      private ImageView i11=null; 
      public ViewHolder(View row) { 
      mRow = row; 
} 
     public TextView gettitle() { 
      if(null == title){ 
       title = (TextView) mRow.findViewById(R.id.title); 
       } 
      return title; 
     }  
     public TextView getdetail() { 
      if(null == detail){ 
        detail = (TextView) mRow.findViewById(R.id.detail); 
        } 
      return detail; 
     } 
     public ImageView getImage() { 
      if(null == i11){ 
        i11 = (ImageView) mRow.findViewById(R.id.img); 
             } 
       return i11; 
     } 
    } 
+0

あなたは何を得ていますか? –

+0

getTitleのメソッドを作成するようにお願いしています。 'i.putExtra(" title "、this.getItem(position).getTitle());' – user961389

+0

あなたがする必要がありますString title = this.getItem(position).getTitle();それを試してみてください。 –

答えて

1

最初に、gettitle()メソッドがあり、getTitle()はアダプタで定義されていません。

getTitle()はアダプタのメソッドです。 getItem(position)はRowData型のオブジェクトを返しますが、そのようなメソッドはありません。

さらに、getTitle()はTextViewを返します。このTextViewのインテントまたは文字列を介してTextViewを渡したいですか?

+0

はい....私は、選択したアイテムの(タイトルと詳細)をバンドルして、新しいアクティビティに送信しようとしています。 – user961389

+0

私はそれを理解しました...私はこのようにタイトルと詳細を取得しなければなりませんでした。 'インテントi =新しいインテント(this、ShowDetails.class); バンドルバンドル= newバンドル(); i.putExtra( "title"、this.getItem(position).getTitle()); i.putExtra( "detail"、this.getItem(position).getDetail()); setResult(ShowDetails.RESULT_OK、i); finish(); ' – user961389

関連する問題