Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在单个listview上加载另一个数据单击_Android_Listview_Animation - Fatal编程技术网

Android 在单个listview上加载另一个数据单击

Android 在单个listview上加载另一个数据单击,android,listview,animation,Android,Listview,Animation,我是新的安卓玩家,所以请帮帮我。我正在开发一个应用程序,其中有两个列表视图,一个在顶部,另一个在底部。在底部listview中,很少有卡片是通过动画来显示的,我必须选择一张,然后在动画的帮助下,这些卡片再次上升并设置为顶部listview和底部listview,剩余的卡片将被新的卡片替换。我可以使用一次listview,但无法在底部listview上再次加载卡。我在这里发布我的代码,请帮我摆脱这些家伙。谢谢 主要活动 public class MainActivity extends Actio

我是新的安卓玩家,所以请帮帮我。我正在开发一个应用程序,其中有两个列表视图,一个在顶部,另一个在底部。在底部listview中,很少有卡片是通过动画来显示的,我必须选择一张,然后在动画的帮助下,这些卡片再次上升并设置为顶部listview和底部listview,剩余的卡片将被新的卡片替换。我可以使用一次listview,但无法在底部listview上再次加载卡。我在这里发布我的代码,请帮我摆脱这些家伙。谢谢

主要活动

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;
}

}
公共类MainActivity扩展了ActionBarActivity{
公共类项目{
可提取项目可提取;
字符串项字符串;
项目(可拉伸,t字串){
ItemDrawable=可提取;
ItemString=t;
}
}
静态类视窗夹{
图像视图图标;
文本查看文本;
}
公共类ItemsListAdapter扩展了BaseAdapter{
私人语境;
私人名单;
内部位置;
ItemsListAdapter(上下文c,列表l){
上下文=c;
列表=l;
}
@凌驾
public int getCount(){
返回list.size();
}
@凌驾
公共对象getItem(int位置){
返回列表。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行视图=转换视图;
//重用视图
if(rowView==null){
LayoutInflater充气器=((活动)上下文)。getLayoutInflater();
rowView=充气机。充气(R.layout.row,空);
ViewHolder ViewHolder=新ViewHolder();
viewHolder.icon=(ImageView)rowView.findViewById(R.id.rowImageView);
viewHolder.text=(TextView)rowView.findViewById(R.id.rowTextView);
rowView.setTag(viewHolder);
}
ViewHolder=(ViewHolder)rowView.getTag();
holder.icon.setImageDrawable(list.get(position.ItemDrawable));
holder.text.setText(list.get(position.ItemString));
返回行视图;
}
公共列表getList(){
退货清单;
}
}
列出项目1、项目2;
水平列表视图列表视图1、列表视图2;
ItemsListAdapter MyItemsListAdapter 1、MyItemsListAdapter 2;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView1=(HorizontalListView)findViewById(R.id.listView1);
listView2=(HorizontalListView)findViewById(R.id.listView2);
initItems();
myItemsListAdapter1=新的ItemsListAdapter(这是items1);
myItemsListAdapter2=新的ItemsListAdapter(这是items2);
listView1.setAdapter(myItemsListAdapter1);
listView2.setAdapter(myItemsListAdapter2);
最终动画animScale=AnimationUtils.loadAnimation(这是R.anim.slide\u right\u in);
列表视图1.startAnimation(animScale);
listView1.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Item selectedItem=(Item)(parent.getItemAtPosition(position));
ItemsListAdapter associatedAdapter=(ItemsListAdapter)(parent.getAdapter());
List associatedList=associatedAdapter.getList();
Item associatedItem=associatedList.get(位置);
if(删除项目列表(关联列表、关联项)){
view.invalidate();
associatedAdapter.notifyDataSetChanged();
ItemsListAdapter list2Adapter=(ItemsListAdapter)(listView2.getAdapter());
List list2List=list2Adapter.getList();
addItemToList(list2List,selectedItem);
list2Adapter.notifyDataSetChanged();
}
}
});
listView2.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
((ImageView)view.findViewById(R.id.rowImageView)).setImageResource(R.drawable.card1);
}
});
}
私有项目(){
items1=新的ArrayList();
items2=新的ArrayList();
TypedArray arrayDrawable=getResources().obtainTypedArray(R.array.resicon);
//TypedArray arrayText=getResources().obtainTypedArray(R.array.restext);
对于(int i=0;i
<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>
<?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>