#android
#Android
Вопрос:
это изображение кода не отображается в виде списка, как я могу решить эту проблему?Я установил значение uri в bitmap.so в чем проблема? изменил массив, и ошибка устранена, поскольку неподвижное изображение не отображается в виде списка. MainActivity.java
public class MainActivity extends Activity {
ListView lv;
Context context;
ArrayList prgmName;
Bitmap bitmap;
//bitmap=getBitmapFromUrl("http://content6.flixster.com/movie/11/17/75/11177548_pro.jpg");
public static String [] prgmNameList={"Let Us C","c ","JAVA","Jsp","Microsoft .Net","Android","PHP","Jquery","JavaScript"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bitmap=getBitmapFromUrl("http://content6.flixster.com/movie/11/17/75/11177548_pro.jpg");
context=this;
Bitmap [] prgmImages ={bitmap,bitmap,bitmap,bitmap,bitmap,bitmap,bitmap,bitmap,bitmap};
lv=(ListView) findViewById(R.id.listView);
lv.setAdapter(new CustomAdapter(this, prgmNameList,prgmImages));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private Bitmap getBitmapFromUrl(String src) {
// TODO Auto-generated method stub
try {
URL url =new URL(src);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input=connection.getInputStream();
Bitmap mybiBitmap=BitmapFactory.decodeStream(input);
return mybiBitmap;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return null;
}
}
}
CustomAdapter.java
public class CustomAdapter extends BaseAdapter{
String [] resu<
Context context;
Bitmap[] imageId;
private static LayoutInflater inflater=null;
public CustomAdapter(MainActivity mainActivity, String[] prgmNameList, Bitmap[] prgmImages) {
// TODO Auto-generated constructor stub
result=prgmNameList;
context=mainActivity;
imageId=prgmImages;
inflater = ( LayoutInflater )context.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return result.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public class Holder
{
TextView tv;
ImageView img;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Holder holder=new Holder();
View rowView;
rowView = inflater.inflate(R.layout.list_item, null);
holder.tv=(TextView) rowView.findViewById(R.id.textView1);
holder.img=(ImageView) rowView.findViewById(R.id.imageView1);
// holder.tv.setText(result[position]);
// holder.img.setImageBitmap(imageId[position]);
if(result != null amp;amp; result.length > position)
{
holder.tv.setText(result[position]);
}
if(imageId != null amp;amp; imageId.length > 0)
{
holder.img.setImageBitmap(imageId[0]);
}
rowView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(context, "You Clicked " result[position], Toast.LENGTH_LONG).show();
}
});
return rowView;
}
}
activity_main.xml
<LinearLayout 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:orientation="vertical"
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=".MainActivity" >
<TextView
android:id="@ id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25dp"
android:textStyle="bold"
android:text=" Your Theaters..." />
<ListView
android:id="@ id/listView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</ListView>
</LinearLayout>
list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ImageView
android:id="@ id/imageView1"
android:layout_gravity="center"
android:layout_width="48dp"
android:layout_height="48dp"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@ id/textView1"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25dp"
android:text="TextView" />
</LinearLayout>
Комментарии:
1. Также опубликуйте свой файл list_item XML-макета.
2. Проверьте журнал, получаете ли вы какую-либо ошибку
3. Вы добавили «<uses-permission android:name=»android.permission. ИНТЕРНЕТ » /> » разрешение в манифесте?
4. Вам нужно вызвать notifyDataSetChanged() в вашем адаптере, когда растровое изображение уже загружено.
Ответ №1:
Вероятно, это происходит потому, что перед загрузкой и сохранением растровых изображений в ваш массив вы вызываете adapter . Загрузка изображений занимает некоторое время, и ваш адаптер их не ждет. Смотрите этот пример, он использует загрузчик изображений: http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text /
Комментарии:
1. Но в этом примере URL-адрес содержит XML-файл, но в моем примере URL-адрес не содержит XML-файла, так как я могу разобрать это? мой URL-адрес:reeldealsantikosapi.staging2.perpetuating.com /…
2. Вам не нужен синтаксический анализ. Просто введите свой getView адаптера: ImageLoader. Отображаемое изображение (» content6.flixster.com/movie/11/17/75/11177548_pro.jpg «, thumb_image);
3. как я могу разобрать свой URL-адрес? Я получил исключение с нулевым указателем, потому что у этого URL-адреса нет имени узла? я анализирую этот URL-адрес, потому что мне нужно название фильма с изображением фильма, как я могу это сделать?
Ответ №2:
Есть ли какие-либо NetworkOnMainThreadException
в журнале?
При вызове getBitmapFromUrl
из onCreate
вы загружаете растровое изображение в основной поток, что запрещено, если ваше приложение нацелено на Honeycomb или более позднюю версию. В вашем случае произойдет сбой, потому что вы перехватываете исключение, но вы получите нулевой результат.
Поскольку загрузка изображений из сети очень распространена, существует множество библиотек, которые обрабатывают это (и многое другое, например, кэширование) для вас, например, Universal-Image-Loader или ion