2016-06-20 1 views
0

У меня есть список в моем приложении. Каждая строка имеет кнопку. Я прячу кнопку для некоторых строк с setVisibility. Но видимость кнопок меняется после прокрутки списка. Как я могу остановить это изменение?Прокрутка списков Изменение видимости кнопки?

Я уже видел вопрос с помощью флажка с Listview. Но я не знаю, как реализовать его для кнопок. Поэтому, пожалуйста, направляйте меня!

ADAPTER

public class published_adapter extends BaseAdapter { 

    Context con; 
    ArrayList<HashMap<String, String>> class_list; 
    LayoutInflater inflater; 

    public class ViewHolder 
    { 
     TextView title,description,class_section,date; 
     ImageButton download; 
     Button viewasgn; 
    } 

    public published_adapter(Context co, ArrayList<HashMap<String, String>> list1) { 
     class_list = list1; 
     con = co; 
     inflater = (LayoutInflater) con.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

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

    @Override 
    public Object getItem(int arg0) { 
     return class_list.get(arg0).get("class_name"); 
    } 

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

    @Override 
    public View getView(final int arg0, View arg1, ViewGroup arg2) { 

     View row = arg1; 
     ViewHolder holder = new ViewHolder(); 

     if(row == null) 
     { 
      row = inflater.inflate(
        R.layout.assignment_adapter_layout, arg2, false); 

      // initialize the elements 
      holder.download = (ImageButton) row.findViewById(R.id.download); 
      holder.title = (TextView) row.findViewById(R.id.title); 
      holder.description = (TextView) row.findViewById(R.id.description); 
      holder.class_section = (TextView) row.findViewById(R.id.class_section); 
      holder.date = (TextView) row.findViewById(R.id.date); 
      holder.viewasgn = (Button) row.findViewById(R.id.attend); 

      row.setTag(holder); 
     } 
     else 
     { 
      holder = (ViewHolder)row.getTag(); 
     } 


     String type = class_list.get(arg0).get("ASSIGNMENT_TYPE"); 


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

Где ты прячешь кнопки, там нет коды для того, что вы писали? –

+0

Предполагается, что вы скрываете кнопку в своем назначении_adapter_layout.xml? –

ответ

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"); 
     } 
0

Либо добавить setVisibility(View.INVISIBLE) как @Solhail предложил или скрыть эти кнопки по умолчанию в вашем assignment_adapter_layout.xml путем добавления android:visibility="invisible" в вашем Свойства кнопки, и не изменяйте вещь в вашем текущем коде адаптера.

0

В вашем случае Views будут воссозданы при прокрутке спискаView. Чтобы предотвратить это, вы не должны использовать 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; 
} }