如何从自定义适配器中获取 TextView 的 ID

3

我有一个自定义的ListView适配器,其中包含多个TextView。我想为我的ListView设置onItemClickListener并从TextView中提取文本。我尝试使用以下方法:

String s =(String) ((TextView) mListView.findViewById(R.id.myNr)).getText(); 

但是默认情况下,它总是返回第一个列表项的值!(我猜测这是因为它没有指定从列表中选择的项目ID)

我也尝试了这个:

String s =  (((TextView) mListView.getItemAtPosition(myItemInt)).
                          findViewById(R.id.myNr)).toString();

不起作用!有什么建议吗?

这是在以下函数中实现的:

mListView.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> myAdapter, View myView, 
                        int myItemInt, long mylng) {

             // String s statements

} 

编辑:

以下是完整代码:

 mListView_myentries.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> myAdapter, View myView, 
                        int myItemInt, long mylng) {

                    String workRequestSelected = (String) ((TextView) mListView_myentries.findViewById(R.id.work_request)).getText();
                    String activitySelected = (String) ((TextView) mListView_myentries.findViewById(R.id.activity)).getText();
                    String statusSelected = (String) ((TextView) mListView_myentries.findViewById(R.id.status)).getText();
                    String workRequestDescSelected = (String) ((TextView) mListView_myentries.findViewById(R.id.desc)).getText();
                    String actualHoursString = (String) ((TextView) mListView_myentries.findViewById(R.id.actual_hours)).getText();

}

不太确定,但是如果你在ListView中给每个单独的TextView一个“id”,你就可以从代码中调用它。 - JuiCe
@Harsh,你解决了你的问题吗? - rajpara
不行,就像我说的一样,它总是返回列表中第一个项目的值。 - Harsh
2个回答

3

尝试下面的代码

mListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> myAdapter, View myView,int myItemInt, long mylng) {
             String s =(String) ((TextView) myView.findViewById(R.id.myNr)).getText();
   }
}

这正是我之前所做的。它总是获取第一个列表项的值。 - Harsh
你能在这里发布你的适配器类吗? - rajpara
我已经完成了,请查看。 - Harsh
1
这是我的示例活动,其中包含BaseAdapter和ItemClickListner实现,通过使用myView来获取textView成功地给出了所需的输出 http://pastebin.com/9iwdBm6y - rajpara
这里有另一段使用ArrayAdapter的代码,我在这里测试过了,运行良好:http://pastebin.com/Smr4QtbG - rajpara
是的!我之前使用了我的 ListView 来定位 id,但是我应该使用一个由 onItemClickListener 作为输入参数传递的 view。非常感谢你的代码。 :) - Harsh

0

这对我来说非常完美,但是当我直接调用我的listContacts(listview)时,它总是给我第一条记录,但是当我调用传递给我的视图时,它就像魔法一样工作。

public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {
    String item = (((TextView)view.findViewById(R.id.txtVwConID)).getText().toString());
    Toast.makeText(getApplicationContext(), "you selected: " + item, Toast.LENGTH_SHORT).show();

如果你对我的代码有任何问题,我会在这里发布更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接