更改Listview中的TextView文本没有得到反映

时间:2014-12-01 07:58:58

标签: android listview

shelf_repots_item_row.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#fff"
    android:orientation="vertical" >


 <TextView`enter code here`
       android:id="@+id/textView"
       android:layout_width="150dp"
       android:layout_height="80dp"
       android:layout_marginBottom="5dp"
       android:background="@drawable/back"
       android:textColor="@color/color_black"
       android:gravity="center_vertical"
       android:padding="10dip" />

</LinearLayout>

添加了10个带有文本的TextView元素设置 &#34;设置文本视图1&#34;,&#34;设置文本视图2&#34; ...&#34;设置文本查看10&#34;正确 你可以在下面看到适配器getView()

private class MyAdapter extends BaseAdapter {
   ...

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View retval = LayoutInflater.from(parent.getContext()).inflate(R.layout.shelf_repots_item_row, null);
            TextView title = (TextView) retval.findViewById(R.id.textView);
            title.setBackground(null);
            title.setText("Seting text view :"+position);
            return retval;
        }
    }
}

on item点击我读她的第4个元素读取str2 =(String)textView.getText();并获取在getView中设置的正确字符串。 str2现在是&#34;设置文本视图4&#34;

现在我正在改变textView字符串 textView.setText(&#34;更改文本视图&#34;);

再次读取字符串,如str =(String)textView.getText(); str现在是&#34;更改文本视图&#34;

但是在没有反映的屏幕上。

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

        LinearLayout v = (LinearLayout)parent.getAdapter().getView(position, view, parent);

        TextView textView = (TextView)v.getChildAt(0);
        String str2 = (String) textView.getText();

        textView.setText("Changing Text View");
        textView.setTextColor(R.drawable.back);
        String str = (String) textView.getText();
        ((MyAdapter) parent.getAdapter()).notifyDataSetChanged();
}

任何身体都可以帮助我并显示我做错的地方。 提前致谢。

1 个答案:

答案 0 :(得分:1)

它不会像这样工作,这就是原因。

如果您调用notifyDataSetChanged()列表方法,请致电getView

这里你正在做的是改变文本

    LinearLayout v = (LinearLayout)parent.getAdapter().getView(position, view, parent);
    TextView textView = (TextView)v.getChildAt(0);
    String str2 = (String) textView.getText();
    textView.setText("Changing Text View");

但是当你打电话给((MyAdapter) parent.getAdapter()).notifyDataSetChanged();

由于getView

"Seting text view :"+position再次被调用并将文字视图的文本设置为title.setText("Seting text view :"+position);

为你提供清楚的事情。

如果这对您有帮助,请将其标记为正确。:)