1

我正在使用ListViewListView的每行包含2 TextView檢索列表視圖行數據(包含兩個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) 

我的疑惑是:

  • 如何檢索ListView行內存在的TextView的內容。
  • 如何在檢索數據時區分第1個TextView和第2個TextView

任何幫助表示讚賞。

回答

3

使用findViewbyId()

相反的,

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

試試這個,

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

在情況下,如果你發現這個,然後被工作不只是你這樣的視圖對象試試吧,

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

Bcoz上一個項目單擊監聽器,你將提供從視圖中的確切元素你正在嘗試引用。所以你不需要在這裏再次使用position來找到你的TextView。

+0

它的工作...日Thnx一噸! – GAMA

+0

哦..我不知道。很酷的人.. –

+0

+1 Gr8 answer Andro但我有一個query.a列表將有可能行和每一行將有這個ID「R.id.textviewI」所以list.findViewbyId(R.id.textviewID)將返回哪一個?請幫我解決這個困惑? –

3

您可以在getView()getTag(id)onItemClick()setTag(id, value)

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); 
    }}); 
2

優化方法是::

TextView textview1 =(TextView)view.findViewById(R.id.textview1); 
           ^^^^ 
TextView textview2 =(TextView)view.findViewById(R.id.textview2); 
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); 

     }}); 
相關問題