Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从ListView获取文本视图而不单击?_Android_Listview_Textview - Fatal编程技术网

Android 如何从ListView获取文本视图而不单击?

Android 如何从ListView获取文本视图而不单击?,android,listview,textview,Android,Listview,Textview,我从Android开始,使用ListActivity创建一个基本的待办事项列表。本质上,每次单击一个项目(条目)时,该项目都会在其相应的SharedReferences文件中被标记(或未标记)。此外,还使用setPaintFlags对相应的TextView进行斜杠(或取消斜杠),如下所示: protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(

我从Android开始,使用
ListActivity
创建一个基本的待办事项列表。本质上,每次单击一个项目(条目)时,该项目都会在其相应的
SharedReferences
文件中被标记(或未标记)。此外,还使用
setPaintFlags
对相应的
TextView
进行斜杠(或取消斜杠),如下所示:

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

    SharedPreferences savedList = this.getPreferences(0);
    String item = savedList.getString(position + "", "");

    if ( item.contains(checked) )   {
        item = item.replace(checked,"");
        SaveItem(item, position);   
        ((TextView)v).setPaintFlags( ((TextView)v).getPaintFlags() & (~ Paint.STRIKE_THRU_TEXT_FLAG));
    }
    else   {
        item = checked + item;
        SaveItem(item,position);
        ((TextView)v).setPaintFlags( ((TextView)v).getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
    }       
}
for (int i = 0;; i++){
    pos = i;
    listitems = savedList.getString(""+i,"");
    if (listitems.matches("")){ //if first entry in saved file is empty, stop the loop
        break;
    }
    else if(listitems.contains(checked)){
        listitems.replace(checked,"");
        listItems.add(listitems);
        adapter.notifyDataSetChanged();     
        TextView textview = (TextView) (getListView()).getChildAt(i);
        textview.setPaintFlags( textview.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
    }
    else{
        listItems.add(listitems);
        adapter.notifyDataSetChanged();
    }
}
(这里的“选中”只是一个字符串。) 在
OnCreate
方法中,要读取
SharedReferences
文件以重新加载清单中的项目,并且对于已标记的项目,我想再次将其删除,如下所示:

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

    SharedPreferences savedList = this.getPreferences(0);
    String item = savedList.getString(position + "", "");

    if ( item.contains(checked) )   {
        item = item.replace(checked,"");
        SaveItem(item, position);   
        ((TextView)v).setPaintFlags( ((TextView)v).getPaintFlags() & (~ Paint.STRIKE_THRU_TEXT_FLAG));
    }
    else   {
        item = checked + item;
        SaveItem(item,position);
        ((TextView)v).setPaintFlags( ((TextView)v).getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
    }       
}
for (int i = 0;; i++){
    pos = i;
    listitems = savedList.getString(""+i,"");
    if (listitems.matches("")){ //if first entry in saved file is empty, stop the loop
        break;
    }
    else if(listitems.contains(checked)){
        listitems.replace(checked,"");
        listItems.add(listitems);
        adapter.notifyDataSetChanged();     
        TextView textview = (TextView) (getListView()).getChildAt(i);
        textview.setPaintFlags( textview.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
    }
    else{
        listItems.add(listitems);
        adapter.notifyDataSetChanged();
    }
}
这似乎不起作用,出现了两个问题:第一,即使我从已检查的项目中删除了“已检查”,但出现在
ListView
中的项目仍然有一个“已检查”。其次,罢工没有出现,这让我相信相应的
TextView
没有被发现


编辑:忘记包含某些内容。

查看v不是文本视图,如果您的文本视图有id,您可以使用
v.findViewById
onListItemClick
上查找您的目标文本视图

TextView textview = (TextView) (getListView()).getChildAt(i);

您还可以使用
getListView().getChildAt(i).findViewByid

我没有正确地获取问题,但无论从列表项中获取您想要的
Textview
在您的
onListItem中,单击
可以获取您的
Textview

TextView textview = ((TextView) ((ViewGroup) v).getChildAt(1));

其中
getChildAt(1)
1是列表项的索引号

您的最后一行不返回整数吗?而我希望从ListView中检索TextView。