ViewFlipper를 ListItem으로 갖는 ListView를 만들었습니다. ViewFlipper에는 두 개의 상대 레이아웃이 있습니다 (ID는 rView1, rView2입니다). ListView에 onItemClickListener() 및 OnItemLongClickListener를 설정하고 있습니다.ViewFlipper onItemClickListener가있는 목록보기 항목이 작동하지 않습니다.
onLongClickListener() viewFlipper는 nextView를 표시하고 onItemClickListener()는 현재 view viewFlipper를 확인합니다. 사례 1 : ViewFlipper의 현재보기가 -rView1 인 경우 새로운 활동이 시작됩니다. 사례 2 : ViewFlipper의 현재보기가 -rView2 인 경우보기를 다시 건너 뜁니다. 문제 2가 제대로 작동하지 않는 문제가 있습니다. 다른보기가 목록에서 뒤집습니다. 여기 내 코드입니다 -
ListActivity-
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("onCreate", "ListActivity");
YouponDatabase.getInstance(getApplicationContext());
setContentView(R.layout.yp_coupon_list);
handler = new Handler();
listView = (ListView) findViewById(R.id.yp_coupon_list);
adapter = new ListAdapter(getApplicationContext());
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parentView, View view,
int position, long column) {
View v = ((ViewFlipper) view.findViewById(R.id.view_flipper))
.getCurrentView();
if (v.getId() == R.id.rView1) {
Log.d("ListActivity", "detail item click");
Intent intent = new Intent(ListActivity.this,
DetailActivity.class);
startActivity(intent);
} else if (v.getId() == R.id.rView2) {
Log.d("ListActivity", "share item click::"
+ view.toString());
adapter.flipItem(view);
}
}
});
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parentView,
View view, int position, long column) {
Log.d("ListActivity", "item long click");
adapter.flipItem(view, position);
return true;
}
});
}
ListAdapter-
public class ListAdapter extends BaseAdapter {
private static class ViewHolder {
private ViewFlipper flipper;
private ImageView listImage;
private TextView Area;
};
private LayoutInflater inflater;
private Context appContext;
private Handler handler = new Handler();
private List<item> currentList;
private DrawableLoader drawableLoader = null;
private ViewHolder viewHolder;
public ListAdapter(Context context) {
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
appContext = context.getApplicationContext();
drawableLoader = new DrawableLoader(appContext);
}
public void setList(List<item> list) {
currentList = list;
}
@Override
public int getCount() {
if (currentList != null)
return currentList.size();
return 0;
}
@Override
public Object getItem(int position) {
return currentList.get(position);
}
@Override
public long getItemId(int position) {
return -1;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final item x = currentList.get(position);
if (convertView == null) {
convertView = inflater.inflate(R.layout.yp_coupon_list_content,
null);
}
viewHolder = (ViewHolder) convertView.getTag();
if (viewHolder == null && convertView.getId() == -1) {
viewHolder = new ViewHolder();
viewHolder.flipper = (ViewFlipper) convertView
.findViewById(R.id.view_flipper);
viewHolder.listImage = (ImageView) convertView
.findViewWithTag(appContext.getResources().getString(
R.string.yp_image_tag));
viewHolder.Area = (TextView) convertView
.findViewById(R.id.yp_coupon_area);
convertView.setTag(viewHolder);
} else {
View v = viewHolder.flipper.getCurrentView();
if (v.getId() == R.id.deal_share) {
Log.d("list Adapter", "Reset it");
viewHolder.flipper.setDisplayedChild(0);
}
}
viewHolder.Area.setText(x.getArea());
return convertView;
}
public void flipItem(View view, int position) {
if (view != null) {
Log.d("flipItem", "" + view.toString());
ViewFlipper viewFlipper = ((ViewFlipper) view
.findViewById(R.id.view_flipper));
if (viewFlipper.getCurrentView().getId() == R.id.deal_detial) {
Log.d("flipItem", "now share comes");
viewFlipper.showNext();
ImageView share = (ImageView) view.findViewById(R.id.share);
share.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Log.d("Share clicked", "Inflate layout");
}
});
} else {
Log.d("flipItem", "now detail comes");
viewFlipper.showNext();
}
}
}
public void flipItem(View view) {
if (view != null) {
Log.d("flipItem", "" + view.toString());
ViewFlipper viewFlipper = ((ViewFlipper) view
.findViewById(R.id.view_flipper));
viewFlipper.showNext();
}
}
, 내 코드에서 어떤 문제가 있는지 알아낼 수 없습니다 제발 도와주세요.
확인이 하나 http://stackoverflow.com/questions/14531897/viewflipper-in-listview-row –