Android Listview条目重复

时间:2013-10-18 19:56:33

标签: android listview duplicates

对于Android编程来说相当新,我有一个Listview,其值正在我的代码中填充,但每当有方向更改或恢复列表条目正在重新填充(导致重复条目)我如何解决此问题< / p>

5 个答案:

答案 0 :(得分:1)

对于活动manifest.xml中高于13的API,只需添加android:configChanges="orientation|screenSize",对于较低的API,只需添加android:configChanges="orientation"

  

如果您的应用程序的目标是API级别13或更高级别(由   minSdkVersion和targetSdkVersion属性),那么你也应该   声明“screenSize”配置,因为它也会在a时发生变化   设备在纵向和横向之间切换。

答案 1 :(得分:1)

根据您的要求,您可以看到使用ViewHolder进行ListView的示例适配器:

public class AllCustomerListCustomAdapter extends SimpleCursorAdapter {

private Cursor c;                       // Passed in cursor
private Activity context;


public CustomAdapter(Activity context, int layout, Cursor c,
        String[] from, int[] to) {

    super(context, layout, c, from, to);
    this.c = c;
    this.context = context;

    c.moveToFirst();
}

static class ViewHolder 
{
    public TextView rowView1;
    public TextView rowView2;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    View rowView = convertView;
    c.moveToPosition(position);


    if (rowView == null) 
    {
        LayoutInflater inflater = (context).getLayoutInflater();
        rowView = inflater.inflate(R.layout.listview_row, null, true);
        holder = new ViewHolder();
        holder.rowView1 = (TextView) rowView.findViewById(R.id.txtListItem1);
        holder.rowView2 = (TextView) rowView.findViewById(R.id.txtListItem2);

        rowView.setTag(holder);
    }
    else
    {
        holder = (ViewHolder) rowView.getTag();
    }
    holder.rowView1.setText(c.getString(c.getColumnIndex(DBAdapter.KEY_VIEW1)));
    holder.rowView2.setText(c.getString(c.getColumnIndex(DBAdapter.KEY_VIEW2)));


return rowView;
}

答案 2 :(得分:0)

您可以在清单文件上的活动定义中设置值为android:configChanges的属性orientation,以防止在方向更改时重新创建活动。

<Activity
...
...
android:configChanges="orientation"
/>

答案 3 :(得分:0)

ListView有一个适配器,用于填充数据。 我想你已经在你的代码中使用过了吗? 因此,在将其设置为列表视图之前,必须清除适配器中的数据以避免重复项。 我有同样的问题,并通过使用它解决... 如果你把你的代码也提到了我...

答案 4 :(得分:0)

这是android中的预期行为,当您更改方向时,它将启动一个新活动 您可以使用android:configChanges

  

列出活动将自行处理的配置更改。什么时候   在运行时发生配置更改,活动将关闭   默认情况下重新启动,但使用此声明配置   属性将阻止活动重新启动。相反,   活动仍在运行,其onConfigurationChanged()方法是   调用。

将此manifest.xml

添加到android:configChanges="orientation"文件中