在android listview中,当我回去的时候,我的数据是多次获得它?

时间:2011-10-11 13:43:32

标签: android listview

我有两个观点:

  1. Listview
  2. 清单项目的详情
  3. 当我首先运行我的应用时,它会显示ListView然后我选择了 来自ListView的项目将进入下一个名为详细信息的视图 项目清单。现在当我回到ListView的项目时 列表多次出现。我该如何解决这个问题?

    由于

    以下显示的方式我将数据添加到ArrayAdapter。

    MyArrayAdapter adapter = new MyArrayAdapter(SampleActivity.this, R.layout.citieslist, scity);
    
    lv.setAdapter(adapter);
    lv.setTextFilterEnabled(true);
    

    MyArrayAdapter如下......

    private class MyArrayAdapter extends BaseAdapter {
        String[] items;
    
        public MyArrayAdapter(Context context, int
                textViewResourceId, String[] items) {
            this.items = items;
        }
    
        @Override
        public int getCount() {
            return items.length;
        }
    
        @Override
        public Object getItem(int position) {
            return
                    position;
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;
            if (v == null) {
                LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.citieslist, null);
            }
            TextView tv = (TextView) v.findViewById(R.id.tvCity);
            tv.setText(items[position]);
            return v;
        }
    }
    

2 个答案:

答案 0 :(得分:0)

我会尝试三件事:

  1. 删除setTextFilterEnabled行。除非您正在使用我不了解的过滤专门做些什么。
  2. 你是在传递上下文而不是保存它。将其保存到类变量中并将其用于#3。
  3. 将适配器的getView()方法的inflate行更改为:

    if (v == null) {                
        v = LayoutInflater.from(context).inflate(R.layout.citieslist, parent, false);
    }
    

答案 1 :(得分:0)

有两种可能性,

之一:

当您从详细信息视图返回列表视图页面时,

如果您使用" startActivity(意图)",请替换为"完成()"。

2: 初始化listview" scity"在" onCreateView()"