Adapter的施用求解

Adapter的使用求解打个比方:1.aActivity里有各种商品列表,商品列表是从服务器中获取,用到Adapter,同时模拟

Adapter的使用求解
打个比方:
1.aActivity里有各种商品列表,商品列表是从服务器中获取,用到Adapter,同时模拟一个商品列表(有图有文字,不显得很空白没内容,相当于Demo,图片在Drawable中获取)也用到Adapter,问题是可否使用同一个Adapter,兼顾

2.bActivity也是一个照片列表,也是从服务器中获取,内容和上面差不多,实现的功能也是一样,


3.重点是这里:aActivity和bActivity可否使用一个公共的Adapter!实现两个Activity两样不同的需求!求高手指点! 写法
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;


}
}
}

[解决办法]
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));
        
        
    }
}
[解决办法]
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>
[解决办法]

引用:
Quote: 引用:

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

现在考虑到两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.你应该动手写写,不要老等别人写好的代码,呵呵,加油