daimajia / AndroidSwipeLayout

The Most Powerful Swipe Layout!
MIT License
12.38k stars 2.67k forks source link

AndroidBinding ListViewAdapter and AndroidSwipeLayout #337

Open margiel opened 8 years ago

margiel commented 8 years ago

Hi,

I try implement androidbindig with ListViewAdpater. In demo application in class ListViewAdapter.java in method generateView wrote this code:

@Override public View generateView(int position, ViewGroup parent) { MyListAdapterBinding binding = DataBindingUtil.inflate(LayoutInflater.from(getContext()),R.layout.check, parent, false); View convertView = binding.getRoot(); binding.setModel(this.getItem(position)); convertView.setTag(binding); return convertView; }

In my list I see diffrent items on pages with not the same model for row:

screenshot_2016-06-28-21-20-04 1 screenshot_2016-06-28-21-20-15 1

Can anybody helps with this idea ?

When I wrote class extends BaseAdapter and implement inside AndroidBinding it works: public class ListViewAndroidBindingAdapter extends BaseAdapter {

private Context mContext;
private List<ListDataModel> dataList;

public ListViewAndroidBindingAdapter(Context mContext) {
    this.mContext = mContext;
    dataList = ListDataManager.getListDataModelList();
}

@Override
public int getCount() {
    return dataList.size();
}

@Override
public Object getItem(int position) {
    return dataList.get(position);
}

public ListDataModel getModel(int position) {
    return (ListDataModel)getItem(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    ListviewadapterItemBinding binding = null;
    if(convertView == null) {
        binding = DataBindingUtil.inflate(LayoutInflater.from(mContext),R.layout.listviewadapter_item, parent, false);
        convertView = binding.getRoot();
    }
    else {
        binding = (ListviewadapterItemBinding)convertView.getTag();
    }

    binding.setViewModel(new ListViewAdapterViewModel(getModel(position)));
    convertView.setTag(binding);

    return convertView;
}

}

screenshot_2016-06-28-21-19-50 screenshot_2016-06-28-21-19-38

I prepare simple solution for this two kind of situations: https://bitbucket.org/margiel/androidbindingpoc