需要修复我的适配器以在ListView中显示图像
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了需要修复我的适配器以在ListView中显示图像相关的知识,希望对你有一定的参考价值。
android studio和java的新手。只是从这里和那里学习。
以前我在这里提出过请求,但每个人都回答了一个参考。你知道从一个新学习者的参考文献中很难理解。
我试图加载与毕加索的listview
图像,但与适配器搞砸了。我需要的是修复我的适配器。
其中一个TABS的代码:
public class FinTab extends Fragment {
ListView installs;
ImageView image;
static final String url = "http://192.168.5.2/test.php";
ProgressBar dialog;
private SimpleAdapter tva;
static final String NAME = "name";
static final String TASK = "task";
static final String DESC = "desc";
static final String MURL = "murl";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.Fin_tab, container, false);
installs = rootView.findViewById(R.id.install_list);
image = rootView.findViewById(R.id.imgs);
dialog = new ProgressBar(getActivity().getApplicationContext());
dialog.setVisibility(View.VISIBLE);
StringRequest request = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String string) {
// parseJsonData(string);
//start
try {
JSONObject object = new JSONObject(string);
JSONArray offers = object.optJSONArray("lists");
ArrayList<HashMap<String, String>> list = new ArrayList<>();
HashMap<String, String> item;
for(int i = 0; i < offers.length(); i++) {
JSONObject jsonChildNode = offers.getJSONObject(i);
item = new HashMap<>();
item.put(NAME, jsonChildNode.optString("name"));
item.put(TASK, jsonChildNode.optString("tasker"));
item.put(DESC, jsonChildNode.optString("descript"));
item.put(MURL, jsonChildNode.optString("picture"));
//String imageUrl = jsonChildNode.optString("picture");
//Picasso.with(getActivity()).load(imageUrl).into(image);
list.add(item);
}
tva = new MyAdapter(getActivity(), list,
R.layout.fin_item,
new String[]{NAME, TASK, DESC, MURL},
new int[]{R.id.line_a, R.id.line_b, R.id.line_c, R.id.imgs});
installs.setAdapter(tva);
} catch (JSONException e) {
e.printStackTrace();
}
dialog.setVisibility(View.GONE);
//end
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(getActivity().getApplicationContext(), "Some error occurred!!", Toast.LENGTH_SHORT).show();
dialog.setVisibility(View.GONE);
}
});
RequestQueue rQueue = Volley.newRequestQueue(getActivity().getApplicationContext());
rQueue.add(request);
return rootView;
}
}
搞砸适配器:
public class MyAdapter extends SimpleAdapter {
public MyAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to){
super(context, data, resource, from, to);
}
public View getView(int position, View convertView, ViewGroup parent){
View v = super.getView(position, convertView, parent);
ImageView img = (ImageView) v.getTag();
if(img == null){
img = (ImageView) v.findViewById(R.id.imgs);
v.setTag(img);
}
String url = ((Map)getItem(position)).get(FinTab.MURL);
Picasso.with(v.getContext()).load(url).into(img);
return v;
}
}
它包括在内
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.finetcity.fins">
<ListView
android:id="@+id/install_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
fin_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/line_a"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textSize="22sp"
android:textStyle="italic" />
<TextView
android:id="@+id/line_b"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textSize="14sp" />
<TextView
android:id="@+id/line_c"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textSize="14sp" />
<TextView
android:id="@+id/line_d"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textSize="14sp" />
<ImageView
android:id="@+id/imgs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:background="#000000"
android:padding="1dp" />
</LinearLayout>
错误:在
String url = ((Map)getItem(position)).get(FinTab.MURL);
上要求:java.lang.String
发现:java.lang.Object
请帮帮我。
答案
试试这个
String url = ((Map)getItem(position)).get(FinTab.MURL).toString();
(要么)
String url = String.valueOf(((Map)getItem(position)).get(FinTab.MURL));
如果你使用Android工作室,你可以点击任何带下划线的符号,几秒后你可能会看到显示红色感叹号,点击它,IDE建议你解决问题。
以上是关于需要修复我的适配器以在ListView中显示图像的主要内容,如果未能解决你的问题,请参考以下文章
android listview 适配器 asynctask 图像加载