2016-06-20 7 views
0

Ich habe eine Listenansicht in meiner App. Jede Zeile hat eine Schaltfläche. Ich verstecke den Knopf für einige Reihen mit setVisibility. Die Sichtbarkeit der Schaltflächen ändert sich jedoch nach dem Scrollen der Liste. Wie kann ich diese Veränderung stoppen?Listview Scrolling-Änderungen Schaltflächensichtbarkeit?

Ich habe bereits eine Frage mit der Checkbox mit Listview gesehen. Aber ich weiß nicht, wie ich es für die Buttons implementieren soll. Also bitte führe mich!

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

Wo verstecken Sie die Tasten, kein Code dort ist das, was Sie auf dem Laufenden? –

+0

Wir sollten davon ausgehen, dass Sie die Schaltfläche in Ihrer assignment_adapter_layout.xml verstecken? –

Antwort

0

Aktualisieren Sie Ihren Code wie dieses Add

 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

Entweder die setVisibility(View.INVISIBLE) wie @Solhail vorgeschlagen oder die Tasten standardmäßig in Ihrem assignment_adapter_layout.xml ausblenden, indem Sie das Hinzufügen android:visibility="invisible" in Ihrem Button-Eigenschaften, und ändern Sie nichts in Ihrem aktuellen Adapter-Code.

0

In Ihrem Fall werden Ansichten neu erstellt, wenn listView scroll ist. Um dies zu verhindern, sollten Sie ViewHolder nicht verwenden.

Sie müssen Benutzer-Adapter wie folgt aus: (Nur wenn Sie nicht viele Elemente haben)

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; 
} }