2010-09-27 55 views
0

我在更改ListView中TextView内部的数据时遇到问题。 我可以访问数据并发送文本的祝词,但是当我更改它时,列表不会更新 。访问ListView中的行

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, presidents)); 
    ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 
    ListAdapter list_adapter = lv.getAdapter(); 
    TextView var_x = (TextView) list_adapter.getView(0,null,null); 
    ListView list = getListView(); 
    int count = list.getChildCount(); 
    Toast.makeText(getApplicationContext(),(var_x).getText(),Toast.LENGTH_SHORT).show(); 
    var_x.setText("not a president"); 
} 

我已经创建了一行后,如何更改行的文本/样式?

感谢所有帮助

回答

0

试试这个:

适配器=新ArrayAdapter(这一点,android.R.layout.simple_list_item_1,总裁) setListAdapter(适配器);

//使列表

adapter.notifyDataSetChanged()的变化; //刷新

+0

我尝试这样做,但它似乎没有任何区别。 – Justin 2010-09-28 13:46:18

0

希望这将工作..

ArrayAdapter adapter = new ArrayAdapter<String>(this, ..., ...)); 

ListView resultList = (ListView) findViewById(R.id.resultList); 
resultList.setAdapter(adapter); 

TextView text = (TextView) adapter.getView(0, null, null); // as an example, use the first element in the list 

Spannable str = (Spannable) text.getText(); 
str.setSpan(new StyleSpan(Typeface.BOLD), 0, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // whatever changes you want to make, this is just an example 

感谢,

+0

嗨,感谢您的回复。此行: – Justin 2010-09-28 13:08:46

+0

Spannable str =(Spannable)text.getText(); – Justin 2010-09-28 13:09:29

+0

会导致错误。你是否假设我在其他地方创建了R.id.resultlist?这个语句与我对getListView()的调用有什么不同吗? – Justin 2010-09-28 13:10:46

0
ListView list = (ListView) findViewById(R.id.list); 
adapter = new MyAdapter(this,R.layout.main, 
      R.id.row_text, 
      new String[]{"one", "two", "three"}); 
list.setAdapter(adapter); 

//Custom Adapter class 

private class MyAdapter extends ArrayAdapter<String>{ 

    String[] mStrings; 
    LayoutInflater mInflater; 

    public MyAdapter(Context context, int resource, int textViewResourceId, 
      String[] strings) { 
     super(context, resource, textViewResourceId, strings); 
     mStrings = strings; 
     mInflater = (LayoutInflater) FirstAct.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     View view = mInflater.inflate(R.layout.main,null, false); 

     TextView text = (TextView) view.findViewById(R.id.row_text); 
     text.setText(mStrings[position]); 

     Spannable str = (Spannable) text.getText(); 
     str.setSpan(new StyleSpan(Typeface.BOLD), 0, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

     return view; 
    } 

} 

希望这段代码会给你更多的想法(比老一个这是一个有点复杂),关于如何获取列表中的每个元素。
只需尝试并将您的意见发送给我。

感谢,

+0

再次感谢,我正在努力让代码运行。我有几个问题。 R.id.list从哪里来,你是否假设我在其他地方创建了它?另外,FirstAct对象是什么? – Justin 2010-09-28 15:56:05