2013-06-20 5 views
1

Я попытался реализовать «Picasso Framework» в моей MainActivity, но он продолжает давать мне ошибку. Именно в этой строке «Picasso.with (MainActivity.this)», «Пикассо» имеет под ним красную линию. Может кто-то, пожалуйста, помогите мне. Я импортировал jar.file.Android Picasso Framework, загружать изображения асинхронно

Пожалуйста, посмотрите на мой код:

package com.chrfugl.xxxx; 

import java.util.List; 
import java.util.Vector; 

import com.chrfugl.studenterhuset.R; 

import android.app.Activity; 
import android.app.ListActivity; 
import android.content.Context; 
import android.content.Intent; 
import android.net.ParseException; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.Window; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.TextView; 

public class MainActivity extends ListActivity { 
private LayoutInflater mInflater; 
private Vector<RowData> data; 
RowData rd; 

public static final String[] title = new String[] { 
     "1", 
     "2", 
     "3", 
     "4", 
     "5, 
     "6", 
     }; 

public static final String[] detail = new String[] { 
    "Text", 
    "Text", 
    "Text", 
    "Text", 
    "Text", 
    "Text", 
    }; 

public static Integer[] imgid = { 
    R.drawable.1, R.drawable.2, 
    R.drawable.3, R.drawable.4, 
    R.drawable.5, R.drawable.6, 

}; 

public static final String[] footer = new String[] { 
    "Text", 
    "Text", 
    "\Text", 
    "\Text", 
    "\Text", 
    "\Text", 
    }; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    mInflater = (LayoutInflater)  getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
    data = new Vector<RowData>(); 
    for (int i = 0; i < title.length; i++) { 

     try { 
      rd = new RowData(i, title[i], detail[i]); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
     data.add(rd); 
    } 
    CustomAdapter adapter = new CustomAdapter(this, R.layout.list_item, R.id.title, data); 
    setListAdapter(adapter); 
    getListView().setTextFilterEnabled(true); 
} 

public void onListItemClick(ListView parent, View v, int position, long id) { 
    Intent intent = new Intent(this, NewActivity.class); 
    intent.putExtra("position", position); 
    startActivity(intent); 
} 

private class RowData { 
    protected int mId; 
    protected String mTitle; 
    protected String mDetail; 

    RowData(int id, String title, String detail) { 
     mId = id; 
     mTitle = title; 
     mDetail = detail; 
    } 

    @Override 
    public String toString() { 
     return mId + " " + mTitle + " " + mDetail; 
    } 
} 

private class CustomAdapter extends ArrayAdapter<RowData> { 

    public CustomAdapter(Context context, int resource, 
      int textViewResourceId, List<RowData> objects) { 

     super(context, resource, textViewResourceId, objects); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     ViewHolder holder = null; 
     TextView title = null; 
     TextView detail = null; 
     ImageView i11 = null; 
     RowData rowData = getItem(position); 
     if (null == convertView) { 
      convertView = mInflater.inflate(R.layout.list_item, null); 
      holder = new ViewHolder(convertView); 
      convertView.setTag(holder); 
     } 
     holder = (ViewHolder) convertView.getTag(); 
     title = holder.gettitle(); 
     title.setText(rowData.mTitle); 
     detail = holder.getdetail(); 
     detail.setText(rowData.mDetail); 

     i11 = holder.getImage(); 
     Picasso.with(MainActivity.this) 
     .load(imgid[rowData.mId]) 
     .placeholder(android.R.color.black) 
     .error(android.R.color.black) 
     .resize(100, 100) 
     .centerCrop() 
     .into(i11); 
     return convertView; 
    } 

    private class ViewHolder { 
     private View mRow; 
     private TextView title = null; 
     private TextView detail = null; 
     private ImageView i11 = null; 

     public ViewHolder(View row) { 
      mRow = row; 
     } 

     public TextView gettitle() { 
      if (null == title) { 
       title = (TextView) mRow.findViewById(R.id.title); 
      } 
      return title; 
     } 

     public TextView getdetail() { 
      if (null == detail) { 
       detail = (TextView) mRow.findViewById(R.id.detail); 
      } 
      return detail; 
     } 

     public ImageView getImage() { 
      if (null == i11) { 
       i11 = (ImageView) mRow.findViewById(R.id.img); 
      } 
      return i11; 
     } 
    } 
} 
} 
+0

Я делаю что-то подобное ЗДЕСЬ !!! http: //stackoverflow.com/questions/18808114/picasso-loading-of-image-spawned-inside-asynctask – toobsco42

ответ

1

Попробуйте this-

Редактировать свой CustomAdapter класс, добавив private Context переменную. Затем в конструкторе CustomAdapter инициализируйте эту переменную.

Затем у вас будет Context, чтобы ссылаться каждый раз, когда вам нужно позвонить Picasso.

Итак, пользовательский адаптер должен выглядеть следующим образом:

private class CustomAdapter extends ArrayAdapter<RowData> { 

    private Context mContext; 

    public CustomAdapter(Context context, int resource, 
     int textViewResourceId, List<RowData> objects) { 

     super(context, resource, textViewResourceId, objects); 
     mContext = context; 

    }... 

Затем сделать Пикассо звонки в getView(), как этот»

Picasso.with(mContext)... и добавить все остальное, что вам нужно

Надеются, что это помогает

.!
+0

Можете ли вы объяснить мне бит с getView()? Я не уверен, что вы хотите от меня? И спасибо за ваш ответ! – Chrfugl

+0

Ваш вызов Picasso выглядит отлично, как сейчас, в getView(). Я думаю, ваша проблема может быть в том, что вы не импортируете библиотеку Picasso. 'Попробуйте добавить импорт com.squareup.picasso.Picasso;' в ваш импорт. – ahaisting

+0

Привет снова. Я теперь импортировал пикассо, и теперь ошибка ушла, так что спасибо! Но когда я пытаюсь запустить приложение на своем устройстве (nexus 4), он падает при загрузке. У вас есть идеи, почему это так? – Chrfugl

Смежные вопросы