打个比方:
1.aActivity里有各种商品列表,商品列表是从服务器中获取,用到Adapter,同时模拟一个商品列表(有图有文字,不显得很空白没内容,相当于Demo,图片在Drawable中获取)也用到Adapter,问题是可否使用同一个Adapter,兼顾2.bActivity也是一个照片列表,也是从服务器中获取,内容和上面差不多,实现的功能也是一样,
3.重点是这里:aActivity和bActivity可否使用一个公共的Adapter!实现两个Activity两样不同的需求!求高手指点!androidColor

解决方案 »

  1.   

    我觉得一个列表用一个adapter,因为每个列表可能里面的布局都不 一样
      

  2.   


    那同一个adapter可以做Demo,联网时又可以作绑定么!
      

  3.   


    那同一个adapter可以做Demo,联网时又可以作绑定么!
    按你的说法  是可以共用的  因为 你是2个activity  所以数据刷新不会影响 
      

  4.   


    那同一个adapter可以做Demo,联网时又可以作绑定么!
    按你的说法  是可以共用的  因为 你是2个activity  所以数据刷新不会影响 
    就是说一个Activity用一个adapter
      

  5.   


    那同一个adapter可以做Demo,联网时又可以作绑定么!
    按你的说法  是可以共用的  因为 你是2个activity  所以数据刷新不会影响 
    就是说一个Activity用一个adapter每次用的时候,不是都得new Adapter,其实就是两个不同数据的adapter
      

  6.   

    我觉得是这样的,你现在有3个类,ActivityA,ActivityB,MyAdapter, 
    A,B可以共用一个MyAdapter类,但是应该是两个实例,new MyAdapter时应该将Context,与数据源传进去。
    大多数人都是将Adapter独立为一个类的
      

  7.   

    现在考虑到两Activity使用到下拉刷新,这样一来就会多一个Adapter,这下要怎么设计
      

  8.   


    因为考虑到两个Activity都使用到下拉刷新(三个Adapter了),这样就更复杂了,恳请大牛指点
      

  9.   

    这么说吧,你的listView里面的类型和适配器里面的类型是相同的,不管你有多少个activity,多少个列表,只要你列表所对应的arraylist里面的对象是同一个对象。那个就可以用一个adapter。有刷新也无所谓的。
      

  10.   

    一个 adapter可以,我也几个界面也共用一个adapter
      

  11.   

    可以分享一下吗,Adapter部分的Demo就可以了,[email protected]
      

  12.   

    我没写demo,直接写的工程,不过你可以参考下这个适配器的写法
    public class MyListAdapter extends BaseAdapter{
    private Activity activity;
    private int[] type;

    private AllWidget allWidget;

    private LayoutInflater mInflater;

    public MyListAdapter(Activity activity,int[] type){
    this.activity = activity;
    this.type = type;
    }


    @Override
    public int getCount() {
    return type.length;
    } @Override
    public Object getItem(int position) {
    // TODO Auto-generated method stub
    return position;
    } @Override
    public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
    } @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    if(convertView == null){
    LayoutInflater mInflater = activity.getLayoutInflater();

    convertView = mInflater.inflate(R.layout.allwidget, null);
    allWidget = new AllWidget(convertView);
    convertView.setTag(allWidget);
    }else{
    allWidget = (AllWidget) convertView.getTag();
    }
    //这里判断要显示什么控件
    switch(type[position]){
    case 0:
    allWidget.getItem_text().setVisibility(View.VISIBLE);
    break;
    case 1:
    allWidget.getItem_icon().setVisibility(View.VISIBLE);
    break;
    case 2:
    allWidget.getItem_but().setVisibility(View.VISIBLE);
    break;
    }

    return convertView;
    } public class AllWidget{
    private TextView item_text;
    private ImageView item_icon;
    private Button item_but;

    private View baseview;

    public AllWidget(View view){
    this.baseview = view;
    }

    public TextView getItem_text() {
    item_text = (TextView)baseview.findViewById(R.id.text);
    return item_text;
    }
    public void setItem_text(TextView item_text) {
    this.item_text = item_text;
    }
    public ImageView getItem_icon() {
    item_icon = (ImageView)baseview.findViewById(R.id.imgview);
    return item_icon;
    }
    public void setItem_icon(ImageView item_icon) {
    this.item_icon = item_icon;
    }
    public Button getItem_but() {
    item_but = (Button)baseview.findViewById(R.id.button);
    return item_but;
    }
    public void setItem_but(Button item_but) {
    this.item_but = item_but;
    }
    }
    }
      

  13.   

    public class ListviewActivity extends Activity {
        /** Called when the activity is first created. */
    private ListView list;
    private int[] type = {0,2,1,0,2,1,1,0};
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            list = (ListView)findViewById(R.id.list);
            list.setAdapter(new MyListAdapter(this,type));
            
            
        }
    }
      

  14.   

    main.xml文件<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" > <ListView 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/list"
        android:divider="@android:color/white"
        android:dividerHeight="1dp"></ListView>
    </LinearLayout>
    allwidget.xml文件
    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/text"
            android:text="@string/app_name"
            android:visibility="invisible"/>
        <Button 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/button"
            android:text="@string/app_name"
            android:visibility="invisible"/>
        <ImageView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/imgview"
            android:src="@drawable/ic_launcher"
            android:visibility="invisible"/></FrameLayout>
      

  15.   

    现在考虑到两Activity使用到下拉刷新,这样一来就会多一个Adapter,这下要怎么设计这个和用不用下拉刷新没有关系。就是你A setAdapter时,会new 一个Adapter,  B在setAdapter时也会new 一个Adapter,这两个Adapter是一个类文件,但是在程序中其实是有两个实例的,所以不会影响你的。
    public MyListAdapter(Activity activity,int[] type){
    this.activity = activity;
    this.type = type;
    }
    有一个人写了几句,其实用实例化MyListAdapter的时候,将activity和type(数据源)都已经传过来了。所以,如果只是数据源不一样,UI一样,完全可以用一个Adapter.你应该动手写写,不要老等别人写好的代码,呵呵,加油