Не работает SimpleAdapter

Ответить
Nail2015
Сообщения: 6
Зарегистрирован: 18 июн 2015, 07:19

Не работает SimpleAdapter

Сообщение Nail2015 » 19 июн 2015, 13:59

Всем привет!
Пишу такую прогу, авторизуюсь в Вконтакте, получаю токен.
Всё хорошо.
На 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, всё работает, только фоток не видно.

В инете вообще нет рабочих примеров загрузки изображений в список из инета.

Помогите чайнику!!!
Спасибо!

Realist
Сообщения: 134
Зарегистрирован: 08 фев 2014, 18:15

Re: Не работает SimpleAdapter

Сообщение Realist » 19 июн 2015, 14:24

А где сама ошибка то?

Nail2015
Сообщения: 6
Зарегистрирован: 18 июн 2015, 07:19

Re: Не работает SimpleAdapter

Сообщение Nail2015 » 19 июн 2015, 14:32

Ошибка от эмулятора при загрузке активити

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Не работает SimpleAdapter

Сообщение klblk » 19 июн 2015, 14:49

-1) учимся оформлять код на форуме правильно.
0) учимся читать логи ошибки, или хотя бы учимся их видеть и прикладывать их к сообщению.
1) из того что вижу, вроде бы идет обращение к сети из ui потока, но логи бы прояснили ситуацию.

Ответить