我使用47deg库来实现的列表视图轻扫手势:https://github.com/47deg/android-swipelistview改变行背景时刷卡
我要改变每行的背景我正在刷它,我有2个问题后。
第一个问题是当我滑动例如第一行,它的背景颜色改变完美,但在我滚动列表后,我看到其他一些行的背景改变了。我搜索了很多,发现这个问题与在listview中重复使用视图有关,但我无法弄清楚该如何解决我的问题。
第二个问题是,只有列表行的前半部分在我滑过后才生效。实际上,当我刷动下半部分的行时,出现错误并强行关闭。也许这个问题与第一个问题有关,我不确定。
这是我的适配器类:
public class WordsListAdapter extends BaseAdapter {
private List<WordsItem> data;
private Context context;
public WordsListAdapter(Context context, List<WordsItem> data){
this.data = data;
this.context = context;
}
@Override
public int getCount() {
return data.size();
}
@Override
public WordsItem getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final WordsItem item = getItem(position);
ViewHolder holder;
if (convertView == null) {
LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = li.inflate(R.layout.custom_row, parent, false);
holder = new ViewHolder();
holder.itemName = (TextView) convertView.findViewById(R.id.example_itemname);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
((SwipeListView)parent).recycle(convertView, position);
holder.itemName.setText(item.getItemName());
return convertView;
}
private static class ViewHolder{
public TextView itemName;
}
}
这是包括swipelistview活动:
public class WordsActivity extends Activity {
private WordsListAdapter adapter;
private List<WordsItem> data;
private int i;
private SwipeListView swipeListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_words);
data = new ArrayList<WordsItem>();
adapter = new WordsListAdapter(this, data);
swipeListView = (SwipeListView) findViewById(R.id.example_swipe_lv_list);
swipeListView.setSwipeListViewListener(new BaseSwipeListViewListener() {
@Override
public void onOpened(int position, boolean toRight) {
swipeListView.closeAnimate(position);
}
@Override
public void onClosed(int position, boolean fromRight) {
}
@Override
public void onListChanged() {
}
@Override
public void onMove(int position, float x) {
}
@Override
public void onStartOpen(int position, int action, boolean right) {
if (right) {
swipeListView.getChildAt(position).findViewById(R.id.front).setBackgroundColor(Color.GREEN);
} else {
swipeListView.getChildAt(position).findViewById(R.id.front).setBackgroundColor(Color.RED);
}
}
}
@Override
public void onStartClose(int position, boolean right) {
Log.d("swipe", String.format("onStartClose %d", position));
}
@Override
public void onClickFrontView(int position) {
Log.d("swipe", String.format("onClickFrontView %d", position));
Toast.makeText(WordsActivity.this, "Clicked",Toast.LENGTH_SHORT).show();
}
@Override
public void onClickBackView(int position) {
Log.d("swipe", String.format("onClickBackView %d", position));
swipeListView.closeAnimate(position);//when you touch back view it will close
}
@Override
public void onDismiss(int[] reverseSortedPositions) {
}
});
swipeListView.setAdapter(adapter);
reload();
i = 0;
for(String word : itemData){
data.add(new WordsItem("item " + i));
i++;
}
adapter.notifyDataSetChanged();
}
private void reload(){
swipeListView.setSwipeMode(SwipeListView.SWIPE_MODE_BOTH); // there are five swiping modes
swipeListView.setSwipeActionLeft(SwipeListView.SWIPE_ACTION_REVEAL); //there are four swipe actions
swipeListView.setSwipeActionRight(SwipeListView.SWIPE_ACTION_REVEAL);
swipeListView.setOffsetLeft(convertDpToPixel(300f)); // left side offset
swipeListView.setOffsetRight(convertDpToPixel(300f)); // right side offset
swipeListView.setAnimationTime(100); // Animation time
swipeListView.setSwipeOpenOnLongPress(true);
}
public int convertDpToPixel(float dp) {
DisplayMetrics metrics = getResources().getDisplayMetrics();
float px = dp * (metrics.densityDpi/160f);
return (int) px;
}
}
在您的适配器类,你已经膨胀是非常重要的结果
listview's
个人观点xml布局“custom_row”。在xml中,你必须定义滑动列表视图两侧的布局。例如:后部和前部布局。你可以改变他们的背景颜色.. – Imeshke