簡體   English   中英

如何在列表視圖中獲取所選項目的索引和文本視圖?

[英]how to get the index and textview of the selected item in listview?

我有一個來自webservice的listview,我想獲取所選項目的索引和textview。我的列表視圖是

         company                  symbol

         android                   an
         iphone                    ip
         blackderry                bb
            .                       .
            .                       .
            .                       .

所以告訴我如何從webservice.list中獲取列表視圖中符號的索引和textview.i使用了兩種方法

第一種方法:

protected void onListItemClick(ListView l, View v, int position,long id) 
{
        super.onListItemClick( l, v, position, id);

        ID = id;

    int selectedPosition = l.getSelectedItemPosition();
        index=String.valueOf(selectedPosition);
         Log.e("index value","index"+index);

   TextView txt=(TextView)findViewById(R.id.symboltext);
        TextView temp=(TextView)v;
        txt.setText(temp.getText());
        Log.e("text",txt.toString());

}

在上面的代碼中,logcat顯示的索引為-1,無法顯示txt。

第二種方法:

    listview.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
   {
    public void onItemSelected(AdapterView parentView, View childView, int position, long id) 
    {
      String text = ((TextView)childView.getText()).toString();
      //The above text variable has the text value of selected item
      // position will reflect the index of selected item
    }
   public void onNothingSelected(AdapterView parentView) 
   {
   }
});

在上面的方法中,listview沒有執行onclick操作。 所以請告訴我如何在列表視圖中獲取所選項目的索引和文本視圖。

最好的祝福

提前致謝

試試這個代碼。 並檢查您的logcat。 它應該為您帶來預期的結果。

protected void onListItemClick(ListView l, View v, int position,long id) 
{
        super.onListItemClick( l, v, position, id);

        ID = id;

       Log.e("index value","index"+position);
       TextView txt = (TextView) v.findViewById(R.id.symboltext);
       Log.e("text",txt.toString());

}

您可以使用哈希圖將您的字符串放入列表視圖

該鏈接將幫助您了解哈希圖如何工作以及如何從中保存和檢索字符串

我在Custom ListView上嘗試過這樣的事情:

在此處輸入圖片說明

我的情況是:

要使用名為JSONArrayRequest服務器從服務器中獲取三個對象,請執行以下操作:

ID (tvLvDocID)
Title (tvLvDocTitle)
Sub Title (tvLvDocSub Title)

ID實際上是MySQL數據庫中項目列的ID

我所做的是:

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

                                    int myPosition = position;

                                    String id_doc_from_lv = listViewDoc.getItemAtPosition(myPosition).toString();
                                    Toast.makeText(getApplicationContext(), "ID is : " + id_doc_from_lv, Toast.LENGTH_LONG).show();

                                }
                            });
                        } catch (Exception e) {
                            e.printStackTrace();
                        }

但是我的問題是它正在返回Custom ListView Title 我只需要ID ,我也在標題上方的ListView顯示了ID (這是另一個故事,我稍后將在該ID應用INVISIBLE屬性)

因為我只想要ID 所以我確實從這個答案中獲得了幫助:

當我在代碼中添加這些行時:

String tv_ID_Str= ((TextView)view.findViewById(R.id.tvLvDocID)).getText().toString();

並將此tv_ID_Str稱為:

Toast.makeText(getApplicationContext(), "ID is : " + tv_ID_Str, Toast.LENGTH_LONG).show();

啊哈! 現在,我可以成功顯示tvLvDocID並且可以從數據庫中檢索有關該ID所有信息。

最終代碼如下所示:

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

                                    int myPosition = position;

                                    String id_doc_from_lv = listViewDoc.getItemAtPosition(myPosition).toString();
                                    // selected item
                                    String tv_ID_Str = ((TextView)view.findViewById(R.id.tvLvDocID)).getText().toString();

                                    Toast.makeText(getApplicationContext(), "ID is : " + tv_ID_Str, Toast.LENGTH_LONG).show();

                            }
                        });
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

我回答的目的是像我這樣的人,他們花很多時間來做到這一點。 我希望這會對某人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM