Android自己的阵列适配器

时间:2012-02-28 14:39:46

标签: android android-listview

抱歉我的英文。我有自己的ArrayAdapter列表活动。我的问题:当我将数据带到Web服务时,会添加数据ArrayList。这里的一切都很正常。 Nexus和Android OS 4.0正在列出数据,但其他手机和2.3.3没有列出数据。一切正常,我没有收到任何错误。

我不知道有什么问题。使用Nexus(OS 4.0)编制程序列表数据,但未在2.3.3中列出。

  • 我的主要活动类是扩展ListActivity
    • public static ArrayList freqzo; static MobileArrayAdapter freqz;
    • freqzo = new ArrayList(); freqz = new MobileArrayAdapter(this,freqzo);
    • this.setListAdapter(freqz); ListView lv = getListView();
    • lv.setTextFilterEnabled(真); //我的填充arraylist部分:if(store
    • instanceof Vector){Object [] arr =((Vector)store).toArray();对
    • (int i = 0; i< arr.length; i ++){freqzo.add((String)arr [i] .toString()); }

我的移动适配器类:

public class MobileArrayAdapter extends ArrayAdapter<String> {

    private final Context context;
    private final ArrayList<String> values;

    public MobileArrayAdapter(Context context, ArrayList<String> values) {
        super(context, R.layout.listlayout, values);
        this.context = context;
        this.values = values;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View rowView = inflater.inflate(R.layout.listlayout, parent, false);
        TextView textView = (TextView) rowView.findViewById(R.id.label);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.logo);

        String s = values.get(position);
        Log.d("Liste", "Liste " + values.get(position));
        if (s != null && !s.equals("")) {
            textView.setText(s);
        }

        // Change icon based on name
        // String s = values[position];

        return rowView;
    }
}

2 个答案:

答案 0 :(得分:1)

也许在填写完列表后,您应该致电adapter.notifyDataSetChanged()

答案 1 :(得分:0)

那件事很糟糕:

    LayoutInflater inflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View rowView = inflater.inflate(R.layout.listlayout, parent, false);

首先,您不要使用适配器为您创建的视图,而是始终创建一个新视图。 Java机器将清理过多的对象,但它需要大量的时间。其次,ArrayAdapter可以完成所有工作。看here