2015-08-24 37 views
0

我使用適配器創建了一個列表視圖。該列表視圖包含表格中特定字段的不同值。現在,當點擊列表視圖項目時,它應該檢索具有該特定數據的標識的所有項目。我設法從列表視圖中獲取數據,但是當項目沒有正確提取時。點擊列表視圖項時檢索到的值

row.xml

<ImageView 
    android:id="@+id/img" 
    android:src="@mipmap/ic_message" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 

    <TextView 
    android:id="@+id/txtid" 
    android:layout_marginTop="10dp" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="sd" 
    /> 

Tab2.java

ListView list; 
    final ArrayList<HashMap<String, String>> mylist; 
    ListAdapter adapter; 
    HashMap<String, String> map2; 
    final TextView a1; 
    list = (ListView) v.findViewById(R.id.listView2); 
    a1 = (TextView) v.findViewById(R.id.txt1); 
    mylist = new ArrayList<HashMap<String, String>>(); 

    DatabaseHandler db = new DatabaseHandler(getActivity()); 
    final List<Product> sent = db.getSentProducts(); 
    for (Product s : sent) { 
     map2 = new HashMap<String, String>(); 
     map2.put("txtid", s.getMsg_id()); 
     mylist.add(map2); 
     Log.d("msgid", s.getMsg_id()); 
    } 
    for (Product s : sent) { 
    } 
    try { 
     adapter = new SimpleAdapter(getActivity(),mylist,R.layout.sent_row, new String[]{"txtid"}, new int[]{R.id.txtid}); 
     list.setAdapter(adapter); 
    } catch (Exception e) { 
    } 


    list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 

      TextView a = (TextView)v.findViewById(R.id.txtid); 
      String content1 = a.getText().toString(); 
      DatabaseHandler db = new DatabaseHandler(getActivity()); 
      List<Product> sentinfo = db.getSentProductInfo(content1); 

      for (Product si : sentinfo){ 

        Log.d("asdsd", si.getStorCode()+" "+si.getCode()+" "+si.getBstock()+" "+si.getDeliveries()+" "+si.getSpoilage()+" "+ si.getEstock()+" "); 
      } 

      return true; 
     } 
    }); 
    return v; 
} 

分貝

enter image description here

的Android UI

enter image description here

當我在ListView點擊20150824070159,它應該在表中提取兩行,但是,它只能取一個,這是其他ID,20150820162104的數據。

我將如何回答這個問題?

+0

ListView職位從0開始couting,你確定你得到正確的價值?嘗試將其他項目添加到列表中,並查看它是否始終獲得高於所點擊值的值,或者是否總是返回第一個值。 – George

+0

我嘗試添加其他值,但結果仍然相同。它總是返回第一個。 – user5083862

回答

1

爲了得到從項目中的文本點擊列表視圖中,你應該這樣做:

list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 

      String clickedText = list.getItemAtPosition(position).toString();     

     } 
    }); 

只要確保你的list變量聲明在全球範圍內,任何方法外,因爲這個功能將在onCreate或任何其他方法已經結束後調用。

相關問題