我有图像文件名,并希望在我的布局中设置适配器,因为我正在使用回收视图。
{
"formules": [
{
"title": "Freecharge",
"imageName": "freerecharge.jpg",
"description": "Get 3% Cashback on Bill Payments of `50 or more + Extra 1.2% Cashback from us",
"expiry_date": "Valid till 12 Jul 2016"
},
{
"title": "Airtel",
"imageName": "airtel.jpg",
"description": "Flat 5% OFF on Airtel postpaid bill payments & Airtel prepaid recharges made through Airtel Money + Upto 3.85% Cashback from",
"expiry_date": "Valid till 31 Jul 2016"
},
{
"title": "Cleartrip",
"imageName": "ctrip.jpg",
"description": "Flat 25% Cashback on Domestic Hotels + Upto `340 Cashback from us",
"expiry_date": "Valid till 15 Jul 2016"
},
{
"title": "FirstCry",
"imageName": "fcry.jpg",
"description": "Flat `400 OFF on order of `1100 from The Premium Store (For First Purchase) + Upto `40 Cashback from us",
"expiry_date": "Valid till 31 Jul 2016"
},
{
"title": "Dominos Pizza",
"imageName": "dominoz.jpg",
"description": "Buy 1 & Get 50% OFF on 2nd Pizza + Extra `29 Cashback from us",
"expiry_date": "Valid till 31 Jul 2016"
},
{
"title": "Lenskart",
"imageName": "lenkart.jpg",
"description": "Get your First Frame FREE + Upto `360 Cashback from us",
"expiry_date": "Valid till 31 Jul 2016"
},
{
"title": "Infibeam",
"imageName": "infibeam.jpg",
"description": "Upto 60% OFF plus Extra 10% OFF on Best-Selling Books worth `200 + Upto 7% Cashback from us",
"expiry_date": "Valid till 20 Jul 2016"
},
{
"title": "Indiatimes Shopping",
"imageName": "itimeshoping.jpg",
"description": "Shop for Multimedia Phones at `499 + Upto `250 Cashback from us",
"expiry_date": "Valid till 31 Jul 2016"
},
{
"title": "ExcitingLives",
"imageName": "exiting.jpg",
"description": "Sound And Light Camera Keychain at `399 + Extra `105 Cashback from us",
"expiry_date": "Valid till 31 Jul 2016"
},
{
"title": "Babyoye",
"imageName": "baboye.jpg",
"description": "End Of Season Sale - Buy 5 & Get 50% OFF on Maternity wear + Upto `410 Cashback from us",
"expiry_date": "Valid till 31 Jul 2016"
},
{
"title": "Ferns N Petals",
"imageName": "frennPetals.jpg",
"description": "Flat 18% OFF Sitewide + Upto 13% Cashback from us",
"expiry_date": "Valid till 30 Sep 2016"
}
]
}
主要类别在哪里采取行动
public class CashBackFragments extends Fragment {
private RecyclerView recyclerView;
private MyRecyclerAdapter mAdapter;
RecyclerView.LayoutManager mLayoutManager;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.cash_back_screen, container, false);
((HomeActivity) getActivity()).setTitle("Cash Back Offers");
recyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(mLayoutManager);
ArrayList<HashMap<String, String>> rows = new CommonFunction(getActivity()).getData("cashBackList.json", "title", "imageName", "description", "expiry_date");
ArrayList<FeedItem> rowItems = new ArrayList<>();
for (int i = 0; rows.size() > i; i++) {
FeedItem item = new FeedItem(rows.get(i).get("title"),
rows.get(i).get("imageName"),
rows.get(i).get("description"),
rows.get(i).get("expiry_date"));
rowItems.add(item);
}
mAdapter = new MyRecyclerAdapter(rowItems,getActivity());
recyclerView.setAdapter(mAdapter);
RecyclerView.ItemDecoration itemDecoration =
new DividerItemDecoration(getActivity(), LinearLayoutManager.VERTICAL);
recyclerView.addItemDecoration(itemDecoration);
return rootView;
}
@Override
public void onPause() {
super.onPause();
((HomeActivity) getActivity()).setTitle("Dashboard");
}
}
我的Adapter类如下:
public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.MyViewHolder> {
private List<FeedItem> dataList;
Context context;
public MyRecyclerAdapter(ArrayList<FeedItem> rowItems, FragmentActivity activity) {
this.dataList = rowItems;
context = activity;
}
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView title;
public TextView description;
public TextView expiry_date;
public ImageView img_cashback;
public MyViewHolder(View view) {
super(view);
title = (TextView) view.findViewById(R.id.title);
description = (TextView) view.findViewById(R.id.txt_description);
expiry_date = (TextView) view.findViewById(R.id.expiry_date);
img_cashback = (ImageView) view.findViewById(R.id.img_cashback);
}
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.cash_back_list, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
FeedItem data = dataList.get(position);
holder.title.setText(data.getTitle());
holder.description.setText(data.getDescription());
holder.expiry_date.setText(data.getExpiryDate());
int id = context.getResources().getIdentifier("com.rayz.digitalpostbox:drawable/" + data.getImageName(), null, null);
holder.img_cashback.setImageResource(id);
}
和FeedItem类如下:
public class FeedItem {
private String title, imageName, description, expiryDate;
public FeedItem(String title, String imageName, String description, String expiryDate) {
this.title = title;
this.imageName = imageName;
this.description = description;
this.expiryDate = expiryDate;
}
public String getExpiryDate() {
return expiryDate;
}
public void setExpiryDate(String expiryDate) {
this.expiryDate = expiryDate;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getImageName() {
return imageName;
}
public void setImageName(String imageName) {
this.imageName = imageName;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
@Override
public int getItemCount() {
return dataList.size();
}
}
问题是我无法在Adpater图像视图中设置图像。我的布局屏幕如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:orientation="vertical"
android:paddingBottom="10dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="10dp">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:gravity="center"
android:text="@string/app_name"
android:textSize="18sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/img_cashback"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/title"
android:layout_centerHorizontal="true"
android:layout_marginBottom="20dp"
android:contentDescription="@string/app_name"
android:src="@drawable/freerecharge" />
<TextView
android:id="@+id/txt_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/btn_cash_back"
android:layout_alignStart="@+id/btn_cash_back"
android:layout_below="@id/img_cashback"
android:layout_marginBottom="20dp"
android:text="@string/txt_name_demo"
android:textSize="16sp" />
<TextView
android:id="@+id/expiry_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/btn_cash_back"
android:layout_alignStart="@+id/btn_cash_back"
android:layout_below="@id/txt_description"
android:layout_marginBottom="20dp"
android:text="@string/txt_date_demo"
android:textSize="16sp" />
<Button
android:id="@id/btn_cash_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/expiry_date"
android:layout_centerInParent="true"
android:background="@color/colorLine"
android:paddingEnd="20dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingStart="20dp"
android:text="@string/txt_cash_back"
android:textColor="@color/colorWhite"
android:textSize="18sp" />
</RelativeLayout>
答案 0 :(得分:0)
为什么不使用Picasso来加载图片。将使你的工作变得轻松。
加载像这样的资产文件夹图像
Picasso.with(context).load("file:///android_asset/"+data.getImageName()).into(holder.img_cashback);
将其放在您的recycleview适配器的onBindViewHolder
中。
来自here
的来源答案 1 :(得分:0)
我正在做愚蠢的错误,因为在我的json数据文件中我做错了文件名模式。我必须将其编辑为:
{
"formules": [
{
"title": "Freecharge",
"imageName": "freerecharge",
"description": "Get 3% Cashback on Bill Payments of `50 or more + Extra 1.2% Cashback from us",
"expiry_date": "Valid till 12 Jul 2016"
},
{
"title": "Airtel",
"imageName": "airtel",
"description": "Flat 5% OFF on Airtel postpaid bill payments & Airtel prepaid recharges made through Airtel Money + Upto 3.85% Cashback from",
"expiry_date": "Valid till 31 Jul 2016"
},
{
"title": "Cleartrip",
"imageName": "ctrip",
"description": "Flat 25% Cashback on Domestic Hotels + Upto `340 Cashback from us",
"expiry_date": "Valid till 15 Jul 2016"
},
{
"title": "FirstCry",
"imageName": "fcry",
"description": "Flat `400 OFF on order of `1100 from The Premium Store (For First Purchase) + Upto `40 Cashback from us",
"expiry_date": "Valid till 31 Jul 2016"
},
{
"title": "Dominos Pizza",
"imageName": "dominoz",
"description": "Buy 1 & Get 50% OFF on 2nd Pizza + Extra `29 Cashback from us",
"expiry_date": "Valid till 31 Jul 2016"
},
{
"title": "Lenskart",
"imageName": "lenkart",
"description": "Get your First Frame FREE + Upto `360 Cashback from us",
"expiry_date": "Valid till 31 Jul 2016"
},
{
"title": "Infibeam",
"imageName": "infibeam",
"description": "Upto 60% OFF plus Extra 10% OFF on Best-Selling Books worth `200 + Upto 7% Cashback from us",
"expiry_date": "Valid till 20 Jul 2016"
},
{
"title": "Indiatimes Shopping",
"imageName": "itimeshoping",
"description": "Shop for Multimedia Phones at `499 + Upto `250 Cashback from us",
"expiry_date": "Valid till 31 Jul 2016"
},
{
"title": "ExcitingLives",
"imageName": "exiting",
"description": "Sound And Light Camera Keychain at `399 + Extra `105 Cashback from us",
"expiry_date": "Valid till 31 Jul 2016"
},
{
"title": "Babyoye",
"imageName": "baboye",
"description": "End Of Season Sale - Buy 5 & Get 50% OFF on Maternity wear + Upto `410 Cashback from us",
"expiry_date": "Valid till 31 Jul 2016"
},
{
"title": "Ferns N Petals",
"imageName": "frennPetals",
"description": "Flat 18% OFF Sitewide + Upto 13% Cashback from us",
"expiry_date": "Valid till 30 Sep 2016"
}
]
}
并在Adapter中设置为:
int id = context.getResources().getIdentifier(data.getImageName(), "drawable",
context.getPackageName());
holder.img_cashback.setImageResource(id);
现在可以在适配器中设置图像。
@Amylinn感谢您的考虑。