我是新的Android家伙,所以请帮帮我。我正在开发一个应用程序,其中顶部有两个Listview,底部有第二个。在Bottom listview中,很少有卡片来自动画,我必须选择一张卡片,然后在动画的帮助下再次将卡片设置为顶部列表视图,并将底部列表视图替换为新卡片。我可以使用listview一次,但无法再在底部列表视图中加载卡片。我在这里发布我的代码请帮助我这些家伙。感谢
MainActivity
public class MainActivity extends ActionBarActivity {
public class Item {
Drawable ItemDrawable;
String ItemString;
Item(Drawable drawable, String t){
ItemDrawable = drawable;
ItemString = t;
}
}
static class ViewHolder {
ImageView icon;
TextView text;
}
public class ItemsListAdapter extends BaseAdapter {
private Context context;
private List<Item> list;
int position;
ItemsListAdapter(Context c, List<Item> l){
context = c;
list = l;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
// reuse views
if (rowView == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
rowView = inflater.inflate(R.layout.row, null);
ViewHolder viewHolder = new ViewHolder();
viewHolder.icon = (ImageView) rowView.findViewById(R.id.rowImageView);
viewHolder.text = (TextView) rowView.findViewById(R.id.rowTextView);
rowView.setTag(viewHolder);
}
ViewHolder holder = (ViewHolder) rowView.getTag();
holder.icon.setImageDrawable(list.get(position).ItemDrawable);
holder.text.setText(list.get(position).ItemString);
return rowView;
}
public List<Item> getList(){
return list;
}
}
List<Item> items1, items2;
HorizontalListView listView1, listView2;
ItemsListAdapter myItemsListAdapter1, myItemsListAdapter2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView1 = (HorizontalListView) findViewById(R.id.listview1);
listView2 = (HorizontalListView) findViewById(R.id.listview2);
initItems();
myItemsListAdapter1 = new ItemsListAdapter(this, items1);
myItemsListAdapter2 = new ItemsListAdapter(this, items2);
listView1.setAdapter(myItemsListAdapter1);
listView2.setAdapter(myItemsListAdapter2);
final Animation animScale = AnimationUtils.loadAnimation(this, R.anim.slide_right_in);
listView1.startAnimation(animScale);
listView1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Item selectedItem = (Item) (parent.getItemAtPosition(position));
ItemsListAdapter associatedAdapter = (ItemsListAdapter) (parent.getAdapter());
List<Item> associatedList = associatedAdapter.getList();
Item associatedItem = associatedList.get(position);
if (removeItemToList(associatedList, associatedItem)) {
view.invalidate();
associatedAdapter.notifyDataSetChanged();
ItemsListAdapter list2Adapter = (ItemsListAdapter) (listView2.getAdapter());
List<Item> list2List = list2Adapter.getList();
addItemToList(list2List, selectedItem);
list2Adapter.notifyDataSetChanged();
}
}
});
listView2.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
((ImageView)view.findViewById(R.id.rowImageView)).setImageResource(R.drawable.card1);
}
});
}
private void initItems(){
items1 = new ArrayList<Item>();
items2 = new ArrayList<Item>();
TypedArray arrayDrawable = getResources().obtainTypedArray(R.array.resicon);
// TypedArray arrayText = getResources().obtainTypedArray(R.array.restext);
for(int i=0; i<arrayDrawable.length(); i++){
Drawable d = arrayDrawable.getDrawable(i);
// String s = arrayText.getString(i);
Item item = new Item(d,"");
items1.add(item);
}
arrayDrawable.recycle();
// arrayText.recycle();
}
private boolean removeItemToList(List<Item> l, Item it){
boolean result = l.remove(it);
return result;
}
private boolean addItemToList(List<Item> l, Item it){
boolean result = l.add(it);
return result;
}
}
XML(activity_main)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="4dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/darker_gray">
<LinearLayout
android:id="@+id/pane1"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_alignParentBottom="true"
android:layout_margin="4dp"
android:background="@android:color/background_light"
android:orientation="vertical">
<com.devsmart.android.ui.HorizontalListView
android:id="@+id/listview1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:id="@+id/pane2"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_alignParentTop="true"
android:layout_margin="4dp"
android:background="@android:color/background_light"
android:orientation="vertical">
<com.devsmart.android.ui.HorizontalListView
android:id="@+id/listview2"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
arrays.xml(卡片图片)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="resicon">
<item>@drawable/card</item>
<item>@drawable/card</item>
<item>@drawable/card</item>
<item>@drawable/card</item>
<item>@drawable/card</item>
<item>@drawable/card</item>
<item>@drawable/card</item>
<item>@drawable/card</item>
<item>@drawable/card</item>
<item>@drawable/card</item>
</array>
</resources>