Всем привет!
Пишу такую прогу, авторизуюсь в Вконтакте, получаю токен.
Всё хорошо.
На 2-м активити загружаю список фоток из альбома.
Всё хорошо.
Использовал стандартный SimpleAdapter
Вот мой код:
Layout Catalog
<LinearLayout
... >
<Button
android1:id="@+id/button1"
android1:layout_width="fill_parent"
android1:layout_height="wrap_content"
android1:text="@string/hello_world" />
<ListView
android1:id="@+id/listView1"
android1:layout_width="fill_parent"
android1:layout_height="fill_parent" >
</ListView>
</LinearLayout>
Layout list_item
<?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:id="@+id/linearLayout1" >
<ImageView
android:id="@+id/img"
android:layout_width="50dp"
android:layout_height="50dp"
android:contentDescription="@string/PhotoImageView" />
<TextView
android:id="@+id/text1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/hello_world"
android:layout_weight="1"
/>
<TextView
android:id="@+id/text2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/hello_world"
android:layout_weight="2"
/>
</LinearLayout>
Теперь код:
public class CatalogView extends Activity{
private String VK_PHOTOS_GET="https://api.vk.com/method/photos.get?ow ... ess_token=";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.catalog);
ArrayList<HashMap<String, String>> catalogList=new ArrayList<HashMap<String,String>>();
String token=getIntent().getExtras().getString("token");
String uid=getIntent().getExtras().getString("uid");
Log.d("ME", uid);
//**********************************
String url=VK_PHOTOS_GET+token;
HttpClient client=new DefaultHttpClient();
HttpGet request=new HttpGet(url);
try
{
HttpResponse response=client.execute(request);
if (response!=null){
StatusLine status=response.getStatusLine();
if (status != null) {
String statusCode = Integer.toString(response.getStatusLine().getStatusCode());
Log.d("ME", statusCode);
}
HttpEntity entity=response.getEntity();
String responseText=EntityUtils.toString(entity);
Log.d("ME", responseText);
//parseResponse(responseText);
//---------------------
JSONObject jsonObj=null;
try
{
jsonObj=new JSONObject(responseText);
JSONObject errorObj=null;
if (jsonObj.has("error")){
errorObj=jsonObj.getJSONObject("error");
int errCode=errorObj.getInt("error_code");
if (errCode==14){
Log.d("ME", "14");
//TV_FN.setText(data.getStringExtra("14"));
}
}
else
{
JSONArray JSArray=jsonObj.getJSONArray("response");
for(int i=0;i<JSArray.length();i++) {
JSONObject ob= JSArray.getJSONObject(i);
HashMap<String,String> item=new HashMap<String, String>();
item.put("Src",ob.getString("src"));
item.put("Name",ob.getString("pid"));
item.put("Tel",ob.getString("text"));
catalogList.add(item);
}
ListView LV=(ListView)findViewById(R.id.listView1);
MySimpleAdapter SA=new MySimpleAdapter(this,
catalogList,
R.layout.list_item,
new String[]{"Src","Name","Tel"},
new int[]{R.id.img,R.id.text1,R.id.text2});
LV.setAdapter(SA);
/*
Picasso.with(this)
.load(ob.getString("photo_100"))
.into(IV_Photo,new Callback() {
@Override
public void onSuccess() {
// TODO Auto-generated method stub
progress1.setVisibility(View.GONE);
}
@Override
public void onError() {
// TODO Auto-generated method stub
progress1.setVisibility(View.GONE);
}
});*/
}
}
catch(JSONException e)
{
e.printStackTrace();
Log.d("ME", "Try");
}
//---------------------
}
}
catch(ClientProtocolException ex)
{
ex.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
//**********************************
}
//МОЙ АДАПТЕР
private class MySimpleAdapter extends SimpleAdapter {
private ArrayList<HashMap<String, String>> results;
private Context context;
public MySimpleAdapter(Context context,
ArrayList<HashMap<String, String>> data, int resource,
String[] from, int[] to) {
// TODO Auto-generated constructor stub
super(context, data, resource, from, to);
this.results = data;
this.context = context;
}
public View getView(int position, View view, ViewGroup parent) {
View v = view;
if (v == null) {
LayoutInflater vi = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.list_item, parent, false);
}
ImageView image = (ImageView) v.findViewById(R.id.img);
Log.d("ME2", results.get(position).get("Src").toString());
Log.d("ME2", results.get(position).get("Name").toString());
Log.d("ME2", results.get(position).get("Tel").toString());
Picasso.with(context).load(results.get(position).get("Src").toString()).into(image);
TextView text1 = (TextView) v.findViewById(R.id.text1);
text1.setText(results.get(position).get("Name").toString());
TextView text2 = (TextView) v.findViewById(R.id.text2);
text2.setText(results.get(position).get("Tel").toString());
return v;
}
Конструктор в DEBUG успеваю отловить при создании MySimpleAdapter,
а дальше вылетает.
Если заменить на просто SimpleAdapter, всё работает, только фоток не видно.
В инете вообще нет рабочих примеров загрузки изображений в список из инета.
Помогите чайнику!!!
Спасибо!
Не работает SimpleAdapter
Re: Не работает SimpleAdapter
А где сама ошибка то?
Re: Не работает SimpleAdapter
Ошибка от эмулятора при загрузке активити
Re: Не работает SimpleAdapter
-1) учимся оформлять код на форуме правильно.
0) учимся читать логи ошибки, или хотя бы учимся их видеть и прикладывать их к сообщению.
1) из того что вижу, вроде бы идет обращение к сети из ui потока, но логи бы прояснили ситуацию.
0) учимся читать логи ошибки, или хотя бы учимся их видеть и прикладывать их к сообщению.
1) из того что вижу, вроде бы идет обращение к сети из ui потока, но логи бы прояснили ситуацию.