2016-06-20 2 views
0

내 앱에서 목록보기를 사용 중입니다. 각 행에는 버튼이 있습니다. setVisibility으로 일부 행의 버튼을 숨기고 있습니다. 그러나 목록을 스크롤 한 후에 버튼 가시성이 변경됩니다. 이 변화를 어떻게 멈출 수 있습니까?목록보기 스크롤 변경 단추 표시 여부?

이미 Listview가있는 체크 박스와 함께 질문을 보았습니다. 하지만 버튼을 구현하는 방법을 모르겠습니다. 그래서 제발 날 안내해주세요!

어댑터

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

assign_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

어느처럼 코드는 @Solhail 같은 setVisibility(View.INVISIBLE) 제안 추가하거나에서 android:visibility="invisible"을 추가하여 assignment_adapter_layout.xml에서 기본적으로 그 버튼을 숨길 당신의 버튼의 속성을 변경하고 현재 어댑터 코드의 내용을 변경하지 마십시오.

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