Listview滚动更改按钮可见性?

时间:2016-06-20 17:28:25

标签: android listview adapter

我在我的应用程序中有一个列表视图。每行都有一个按钮。我隐藏了n行的按钮。但滚动列表后按钮可见性会发生变化。我该如何阻止这种变化?

我已经在Listview的复选框中看到了一个问题。但我不知道如何为按钮实现它。所以请指导我!

ADAPTER

setVisibility

3 个答案:

答案 0 :(得分:0)

像这样更新您的代码

     if (class_list.get(arg0).get("TOTAL_SUBMISSION").equals("0")) {
            Log.e("TITLE", class_list.get(arg0).get("TOTAL_SUBMISSION"));
            holder.viewasgn.setVisibility(View.INVISIBLE);
            holder.viewasgn.setText("");
        }
        else{
            Log.e("TITLE", class_list.get(arg0).get("TOTAL_SUBMISSION"));
            holder.viewasgn.setVisibility(View.VISIBLE);
            holder.viewasgn.setText("VIEW");
        }

答案 1 :(得分:0)

通过在Button的属性中添加setVisibility(View.INVISIBLE),可以在您的assignment_adapter_layout.xml中添加{@ 1}} @Solhail建议或默认隐藏这些按钮,并且不要更改当前适配器代码中的内容。

答案 2 :(得分:0)

在您的情况下,当listView滚动时,将重新创建视图。 为防止这种情况,您不应使用ViewHolder。

你需要像这样的用户适配器: (只有你没有很多元素)

public class SampleAdapter  extends BaseAdapter {
private ArrayList<String> arrayList;
private Activity activity;

public SampleAdapter(ArrayList<String> arrayList, Activity activity) {
    this.arrayList = arrayList;
    this.activity = activity;
}

@Override
public int getCount() {
    return arrayList.size();
}

@Override
public Object getItem(int position) {
    return arrayList.get(position);
}

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


@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    LayoutInflater layoutInflater = activity.getLayoutInflater();
    View view = layoutInflater.inflate(R.layout.sample_element, parent, false);

    TextView textViewTitle = (TextView) view.findViewById(R.id.text_view_title);

    textViewTitle.setText(arrayList.get(position));


    return view;
} }