개발 및 Android 앱을 개발하려고하고 있으며 사용자가 세그먼트 화 된 옵션에서 다른 옵션을 선택하면 내용을 변경하는 ListView 용 사용자 지정 어댑터를 작성했습니다 그룹.사용자 지정 ListView는 첫 번째 작업에만 업데이트되고 두 번째 작업에는 내용이 표시되지 않습니다.
세그먼트 컨트롤이 변경되어 내용이 올바르게 표시되지만 두 번째 선택에서는 모든 데이터를 사용할 수 있지만 내용이 표시되지 않습니다.
크게 될 것이다 올바르게 어댑터를 업데이트하는 방법에 대한 조언은 어댑터와 ListView에 데이터를 수정할
코드 감사
SegmentedButtonGroup segmentedButtonGroup = (SegmentedButtonGroup)
findViewById(R.id.segmented_button_group);
segmentedButtonGroup.setOnClickedButtonPosition(new
SegmentedButtonGroup.OnClickedButtonPosition() {
@Override
public void onClickedButtonPosition(int position) {
Toast.makeText(listing_see.this, "Clicked: " + position,
Toast.LENGTH_SHORT).show();
// Need to make this update the list view on click
if(position == 0){
adapter.clear();
adapter = new CustomListAdapter(listing_see.this, titles1,
allThumbnails1, blurbs1);
adapter.notifyDataSetChanged();
list.setAdapter(adapter);
} else if (position == 1){
adapter.clear();
adapter = new CustomListAdapter(listing_see.this, titles2,
allThumbnails2, blurbs2);
adapter.notifyDataSetChanged();
list.setAdapter(adapter);
} else if (position == 2){
adapter.clear();
adapter = new CustomListAdapter(listing_see.this, titles3,
allThumbnails3, blurbs3);
adapter.notifyDataSetChanged();
list.setAdapter(adapter);
}
}
});
listingview.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/icon"
android:layout_width="110dp"
android:layout_height="80dp"
android:padding="5dp" />
<LinearLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:padding="2dp"
android:textColor="#33CC33" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:layout_marginLeft="10dp"/>
</LinearLayout>
</LinearLayout>
CustomListAdapter
public class CustomListAdapter extends ArrayAdapter<String> {
private final Activity context;
private final List<String> itemname;
private final List<String> imgid;
private final List<String> blurbs;
public CustomListAdapter(Activity context, List<String> itemname, List<String> imgid, List<String> blurbs) {
super(context, R.layout.listingview, itemname);
this.context=context;
this.itemname=itemname;
this.imgid=imgid;
this.blurbs=blurbs;
}
public View getView(int position,View view,ViewGroup parent) {
LayoutInflater inflater=context.getLayoutInflater();
View rowView=inflater.inflate(R.layout.listingview, null,true);
TextView txtTitle = (TextView) rowView.findViewById(R.id.item);
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
TextView extratxt = (TextView) rowView.findViewById(R.id.textView1);
int imageID = getContext().getResources().getIdentifier(imgid.get(position), "drawable", context.getPackageName());
txtTitle.setText(itemname.get(position));
imageView.setImageResource(imageID);
extratxt.setText(blurbs.get(position));
return rowView;
};
}
예상대로 올바르게 다른 탭의 디스플레이에 처음 클릭

초기로드를 표시하고 다른 탭을 선택하면 데이터가 보지되도록 : 시뮬레이터의 617,451,515,
일부 스크린 샷은 무슨 일이 일어나고 있는지 표시합니다.
안녕하세요, 귀하의 회신에 감사드립니다. 내 목록에 제목, 추천 및 섬네일 (문자열)이있어 항목에 3 개의 값을 전달할 때 간단한 추가 작업이 내 상황에서 작동하지 않습니다. 이 작업을 수행 할 수 있도록 내 CustomListAdapter에서 오버로드해야한다고 생각하지만, 그 방법을 완전히 확신하지는 못합니다. – Ashley
문제를 더 생각한 후에 아마도 객체에 전달할 객체를 전달하고 객체를 전달하는 3 개의 항목을 돌리면 사용자가 제안한 것과 작동 할 수있는 CustomListAdapter 생성자를 변경합니다. – Ashley
빌더 기반의 setter로 항목을 추가하거나 3 개의 인수로 메소드를 만들 수 있습니다. –