【问题标题】:Android switch in listview flipping bij scrolling列表视图中的Android开关翻转bij滚动
【发布时间】:2014-12-11 08:39:53
【问题描述】:

我在每一行都使用 Switch 制作一个列表视图。当我将第一个项目设置为 ON 并向下滚动时,第 7 行开关将变为 ON,而第一个开关将变为 OFF .怎么会这样?

基础适配器:

public class QuestionsAdapter extends BaseAdapter {

    private Activity activity;
    private List<QuestionModel> data;
    private static LayoutInflater inflater = null;
    public ImageLoader imageLoader;
    private int Icounter = 1;
    private DecimalFormat f;

    public QuestionsAdapter(Activity a, List<QuestionModel> d) {
        f = new DecimalFormat("0.0");
        activity = a;
        data = d;
        inflater = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageLoader = new ImageLoader(activity.getApplicationContext());
    }

    public int getCount() {
        return data.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(final int position, View convertView, ViewGroup parent) {
        View vi = convertView;
        if (convertView == null)
            vi = inflater.inflate(R.layout.listview_form, null);

        TextView tvQuest = (TextView) vi.findViewById(R.id.tvQuest);

        Switch switch1 = (Switch) vi.findViewById(R.id.activeButton);

        tvQuest.setText(data.get(position).getKey());   
        Icounter++;
        return vi;
    }
}

声明列表视图

questionList = new ArrayList<QuestionModel>();
questionAdapter = new QuestionsAdapter(ShopVisit.this, questionList);
lvQuestion.setAdapter(questionAdapter);

列表视图项目视图

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/lvRow"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/dashboard_button"
    android:orientation="horizontal"
    android:padding="20dp" >
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="4"
        android:gravity="center_vertical"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/tvQuest"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Question"
            android:textColor="@color/dimmed_text_2"
            android:textSize="10dp"
            android:textStyle="bold" />
    </LinearLayout>
     <Switch
        android:id="@+id/activeButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="" /></LinearLayout>

【问题讨论】:

    标签: android listview switch-statement


    【解决方案1】:

    请发布开启和关闭逻辑

    当您尝试更改列表时,您会看到您需要获取单击开关的位置,然后在该位置应用关闭和打开逻辑 如果您有疑问,请打印该位置只是为了检查您是否获得正确的位置

    另一种方法是添加一个数组列表并在单击特定位置并调用时将 0 更改为 1 baseadapaterclassobject.notifydatasetchanged() 方法。

    并在getview方法中添加一行 if(arraylist.get(position) == 1) turn switch on !!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      相关资源
      最近更新 更多