1

私は持っていListViewます。の各行にListViewは2が含まれますTextView

私は次のように実装setOnItemClickListenerListViewました:

list.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {

            // String item = list.getItemAtPosition(position).toString();
            TextView item =(TextView)list.getItemAtPosition(position);
        }});

しかし、次のように「ClassCastException」が発生します。

java.lang.ClassCastException: java.lang.Integer
at com.idealake.lic.Activities.PlansActivity$1.onItemClick(PlansActivity.java:62)
at android.widget.AdapterView.performItemClick(AdapterView.java:284)
at android.widget.ListView.performItemClick(ListView.java:3513)

私の疑問は次のとおりです。

  • 行内のTextView現在のコンテンツを取得するにはどうすればよいですか。ListView
  • データを取得するときに、 1番目TextViewと2番目を区別するにはどうすればよいですか?TextView

助けていただければ幸いです。

4

4 に答える 4

3

findViewbyId()を使用する

それ以外の、

   TextView item =(TextView)list.getItemAtPosition(position);

これを試して、

   TextView item =(TextView)list.findViewbyId(R.id.textviewID);

これが機能していないことがわかった場合は、次のようなビューオブジェクトで試してみてください。

  TextView item =(TextView)view.findViewbyId(R.id.textviewID);

ItemCLickリスナーのBcozでは、参照しようとしているビューから正確な要素が提供されます。したがって、TextViewを見つけるためにここでもう一度positionを使用する必要はありません。

于 2012-06-16T12:27:41.373 に答える
2

あなたはsetTag(id, value)あなたgetView()getTag(id)ですることができますonItemClick()

public View getView(int position, View convertView, ViewGroup parent) {

    convertView = getLayoutInflater().inflate(R.layout.xxx, null);
    TextView mTextView1 = (TextView) convertView .findViewById(R.id.txt1);
    TextView mTextView2 = (TextView) convertView .findViewById(R.id.txt2);

    convertView.setTag(R.id.txt1, mTextView1);
    convertView.setTag(R.id.txt2, mTextView2);
    return convertView;
}

そして、あなたのリストのクリックリスナーでこのようにします

list.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
        TextView mTextView1 =(TextView)view.getTag(R.id.txt1);
        TextView mTextView2 =(TextView)view.getTag(R.id.txt2);
    }});
于 2012-06-16T12:27:30.063 に答える
2

最適化の方法は::

TextView textview1 =(TextView)view.findViewById(R.id.textview1);
                              ^^^^
TextView textview2 =(TextView)view.findViewById(R.id.textview2);
于 2012-06-16T12:30:02.793 に答える
1
list.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {

            TextView item =(TextView)view.findViewById(R.id.textview1);
            TextView item =(TextView)view.findViewById(R.id.textview2);

        }});
于 2012-06-16T12:38:29.717 に答える