У меня проблемы с настройкой cwac touchlistview. Мой код практически идентичен примеру. Единственное отличие состоит в том, что я использовал собственный список вместо списка строк.
Я заметил несколько проблем:
- если я нажму на иконку (граббер), она скопирует сообщение в верхнюю. Если у меня есть список из четырех элементов, и я щелкаю последний три раза, то у меня есть список с такими же сообщениями.
- если переместить строку в верхнюю часть экрана (там, где есть другие значки - см. Изображение), она исчезнет.
Есть идеи, что мне изменить?
import com.commonsware.cwac.tlv.TouchListView;
public class Reorder extends ListActivity{
ArrayList<Message> list = new ArrayList<Message>();
private CustomAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.maincommit);
prekopiraj();
TouchListView tlv=(TouchListView)getListView();
myAdapter = new CustomAdapter();
setListAdapter(myAdapter);
tlv.setDropListener(onDrop);
tlv.setRemoveListener(onRemove);
}
private void prekopiraj(){
for(int i = 0; i<WaitingRoom.messagescopy.size(); i++){
list.add(WaitingRoom.messagescopy.get(i));
}
}
private TouchListView.DropListener onDrop=new TouchListView.DropListener() {
@Override
public void drop(int from, int to) {
Message item=myAdapter.getItem(from);
myAdapter.remove(item);
myAdapter.insert(item, to);
}
};
private TouchListView.RemoveListener onRemove=new TouchListView.RemoveListener() {
@Override
public void remove(int which) {
myAdapter.remove(myAdapter.getItem(which));
}
};
private class CustomAdapter extends ArrayAdapter<Message>{
CustomAdapter() {
super(Reorder.this, R.layout.rowcommit, list);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater inflater=getLayoutInflater();
v=inflater.inflate(R.layout.rowcommit, parent, false);
}
Message o;
o = list.get(position);
if (o != null) {
TextView tt = (TextView) v.findViewById(R.id.textView111);
TextView bt = (TextView) v.findViewById(R.id.textView112);
TextView te = (TextView) v.findViewById(R.id.textView113);
TextView rt = (TextView) v.findViewById(R.id.textView114);
ImageView iv = (ImageView) v.findViewById(R.id.imageView4);
if (tt != null) {
tt.setText("ID: " +Integer.toString(o.getorder_id()) + " Ura: " + o.gettime());
}
if(bt != null){
bt.setText(o.getcustomer_address());
}
if(te != null) {
te.setText(o.getphone());
}
if(rt != null){
rt.setText(o.getfood_order());
}
}
return(v);
}
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
String selection = l.getItemAtPosition(position).toString();
Toast.makeText(this, selection, Toast.LENGTH_LONG).show();
}
}
часть XML
<com.commonsware.cwac.tlv.TouchListView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tlv="http://schemas.android.com/apk/res/com.lightcone.mapoverlaydemo"
android:id="@+id/@android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
tlv:normal_height="70sp"
tlv:grabber="@+id/icon"
tlv:remove_mode="slideRight"
/>