【发布时间】:2013-11-20 23:09:07
【问题描述】:
我试图弄清楚如何将动态 ListView 实现到片段中,但无法弄清楚。此项目使用自定义 ArrayAdapter。
Custom ListView with custom adapter
我想我会链接教程页面,而不是仅仅粘贴所有内容。我将如何在片段页面中进行这项工作?
FeaturedDealsFragment.java(片段类)
public class FeaturedDealsFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View V = inflater.inflate(R.layout.fragment_featured_deals, container, false);
ListView LV = (ListView) this.getActivity().findViewById(R.id.listView1);
Deal deal_data[] = new Deal[]
{
new Deal("Deal 1", R.drawable.scenery, "500/100 Supporters", "$500"),
new Deal("Deal 2", R.drawable.scenery, "500/100 Supporters", "$500"),
new Deal("Deal 3", R.drawable.scenery, "500/100 Supporters", "$500"),
new Deal("Deal 4", R.drawable.scenery, "500/100 Supporters", "$500"),
new Deal("Deal 5", R.drawable.scenery, "500/100 Supporters", "$500")
};
DealAdapter adapter = new DealAdapter(getActivity(), R.layout.listview_item_row, deal_data);
View header = (View)inflater.inflate(R.layout.listview_header_row, null);
LV.addHeaderView(header);
LV.setAdapter(adapter);
return V;
}
}
DealAdapter.java
public class DealAdapter extends ArrayAdapter<Deal>{
Context context;
int layoutResourceId;
Deal data[] = null;
public DealAdapter(Context context, int layoutResourceId, Deal[] data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
DealHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new DealHolder();
holder.txtDeal = (TextView)row.findViewById(R.id.txtDeal);
holder.imgDealImage = (ImageView)row.findViewById(R.id.imgDealImage);
holder.txtSupporters = (TextView)row.findViewById(R.id.txtSupporters);
holder.txtPrice = (TextView)row.findViewById(R.id.txtPrice);
row.setTag(holder);
}
else
{
holder = (DealHolder)row.getTag();
}
Deal deal = data[position];
holder.txtDeal.setText(deal.deal);
holder.imgDealImage.setImageResource(deal.image);
holder.txtSupporters.setText(deal.supporters);
holder.txtPrice.setText(deal.price);
return row;
}
static class DealHolder
{
TextView txtDeal;
ImageView imgDealImage;
TextView txtSupporters;
TextView txtPrice;
}
}
Deal.java
public class Deal {
public String deal;
public int image;
public String supporters;
public String price;
public Deal() {
super();
}
public Deal(String deal, int image, String supporters, String price) {
super();
this.deal = deal;
this.image = image;
this.supporters = supporters;
this.price = price;
}
}
【问题讨论】:
标签: android listview fragment android-arrayadapter