ListView没有正确显示自定义arrayadapter?

时间:2010-12-18 20:44:51

标签: java android listview android-arrayadapter

您好我的Android应用程序有一个listactivity这个活动从另一个活动调用Intent,在调用ListActivity的onCreate方法后创建一个新的AsynchTask并调用Web服务并将所有东西放入我的ArrayList数据来自Web服务很好,但是当我尝试实现customArrayAdapter的getView时,事情变得很奇怪,它有时会显示列表的内容,有时甚至是滚动时的内容。这是我自定义适配器的getView方法。 (布局= textview + listView)

class EntryDetailsAdapter extends ArrayAdapter<Entry>{

      private ArrayList<Entry> entryDetails;
      private Entry tempEntry;

      public EntryDetailsAdapter(Context context, int textViewResourceId,
        List<Entry> objects) {
       super(context, textViewResourceId, objects);
       // TODO Auto-generated constructor stub
       entryDetails =  (ArrayList<Entry>) objects;
      }

      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
       // TODO Auto-generated method stub
       View mView = convertView;

       if(mView == null){

        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mView = inflater.inflate(R.layout.entry_rows, null);

       }

       tempEntry = entryDetails.get(position);
       //data is fine but problem is while occur while showing data

       if(tempEntry != null){
        //get the textview from list row xml that i defined
        TextView textView = (TextView) findViewById(R.id.entryRowTextView);
        if(textView != null){
        //i dont know why but this sometimes giving null so check
         textView.setText(tempEntry.getEntryContent());
        }
       }
       return mView;
      }
     }

[注意]问题可能类似于this question,但我无法找到解决方案

2 个答案:

答案 0 :(得分:0)

既然您说要在列表中显示的数据是从Web服务汇集的,那么数据是否可能尚未加载并且您已经尝试访问它?您是否在设置列表适配器之前等待从服务加载数据?

答案 1 :(得分:0)

尝试:

 TextView textView = (TextView)mView.findViewById(R.id.entryRowTextView);

在获取特定行的TextView字段时,您错过了mView。