[英]Uploading photos from website to android app
我正在嘗試使用AsyncTask,ListView和Jsoup從網站檢索照片到我的android應用程序中。 這兩個類之間有一些困難(一個擴展了Activity,另一個擴展了AsyncTask)這是我的主要活動:
public class MainActivity extends Activity{
private ListView listView;
private ArrayAdapter adapter;
private ArrayList list;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.listview);
listView = (ListView) findViewById( R.id.listview);
list = new ArrayList();
adapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1, list);
listView.setAdapter(adapter);
new LoadImages(list, adapter).execute();
}
這是AsyncTask類:
public class LoadImages extends AsyncTask {
private ArrayAdapter adapter;
私有ArrayList列表;
public LoadImages(ArrayList list, Adapter adapter)
{
this.list = list;
this.adapter = (ArrayAdapter) adapter;
}
protected void onPostExecute(Elements divs) {
// TODO Auto-generated method stub
super.onPostExecute(divs);
for (org.jsoup.nodes.Element div : divs)
{
list.add(div);
}
adapter.notifyDataSetChanged();
}
@Override
protected Object doInBackground(Object... params) {
Document doc = null;
try {
doc = (Document) Jsoup.connect("http://mongol.co.il/").get();
Elements divs =((Elements) doc).select("img[src$=.jpg]");
} catch (IOException e1) {
e1.printStackTrace(); }
return null;
}
}
嘗試在適配器的imageviewHolder上執行此操作:
Connect.loadBitmap( 0, "http://www.saudeanimal.com.br/imagens/suricate06.jpg",
new BitmapLoadListener() {
@Override
public void onLoadListener( int id, Bitmap bitmap ) {
if( bitmap != null ) {
tableBean.setImg( bitmap );
notifyDataSetChanged();
}
}
} );
您的MainActivity.java應該是
public class MainActivity extends Activity
{
private ListView listView;
private ArrayAdapter adapter;
private ArrayList list;
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.listview);
listView = (ListView) findViewById(R.id.listview);
list = new ArrayList();
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list);
listView.setAdapter(adapter);
new LoadImages(list, adapter).execute();
}
}
您的AsyncTask類應該是
public class LoadImages extends AsyncTask
{
private ArrayAdapter adapter;
private ArrayList list;
public LoadImages(ArrayList list, Adapter adapter)
{
this.list = list;
this.adapter = adapter;
}
@Override
protected void onPostExecute(Elements divs)
{
super.onPostExecute(result);
for ( org.jsoup.nodes.Element div : divs )
{
list.add(div);
}
adapter.notifyDataSetChanged();
}
@Override
protected Void doInBackground(Void... params)
{
Document doc = null;
try
{
doc = (Document) Jsoup.connect("http://mongol.co.il/").get();
return ((Elements) doc).select("img[src$=.jpg]");
}
catch (IOException e1)
{
e1.printStackTrace();
}
return null;
}
}
注意:在行return ((Elements) doc).select("img[src$=.jpg]");
有ClassCastExcception return ((Elements) doc).select("img[src$=.jpg]");
。 解決方案僅是從Background線程更新listview,而不是用logcat錯誤編輯的問題( 請參閱下面的注釋以進行澄清 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.