ListView
こんにちは私は1つとImageView
のカスタムを持っていTextView
ます。これがオブジェクトが表示されるべきクラスです
package mk.mk.mk;
public class Artist {
private String artistName;
private String artistImage;
private String artistNameLatin;
public Artist() {
// TODO Auto-generated constructor stub
}
public String getArtistImage() {
return artistImage;
}
public String getArtistName() {
return artistName;
}
public String getArtistNameLatin() {
return artistNameLatin;
}
public void setArtistNameLatin(String artistNameLatin) {
this.artistNameLatin = artistNameLatin;
}
public void setArtistImage(String artistImage) {
this.artistImage = artistImage;
}
public void setArtistName(String artistName) {
this.artistName = artistName;
}
public Artist (String _artistName,String _artistImage,String _artistNameLatin)
{
artistName=_artistName;
artistImage=_artistImage;
artistNameLatin=_artistNameLatin;
}
カスタムアダプタのコードはこれですが
package mk.mk.mk;
import java.util.List;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.style.RelativeSizeSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class ArtistAdapter extends ArrayAdapter<Artist>{
int resource;
private static final String ASSETS_DIR="images/";
public ArtistAdapter(Context _context,int _resource,List<Artist> objects)
{
super(_context,_resource,objects);
resource=_resource;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
RelativeLayout artistLayoutView;
Artist a=getItem(position);
String artistName=a.getArtistName();
if(convertView==null)
{
artistLayoutView=new RelativeLayout(getContext());
String inflater=Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater vi=(LayoutInflater)getContext().getSystemService(inflater);
vi.inflate(resource, artistLayoutView,true);
}
else
{
artistLayoutView=(RelativeLayout)convertView;
}
TextView artistTxt=(TextView)artistLayoutView.findViewById(R.id.artistName);
ImageView resourceIdView=(ImageView)artistLayoutView.findViewById(R.id.artist_icon);
artistTxt.setText(artistName);
String imgFilePath=ASSETS_DIR+a.getArtistImage();
try
{
Drawable d=Drawable.createFromStream(getContext().getAssets().open(imgFilePath), null);
resourceIdView.setImageDrawable(d);
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return artistLayoutView;
}
}
アイテムを入力する必要があるコードはこれです
package mk.mk.mk;
import java.util.ArrayList;
import android.app.Activity;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.ListView;
public class ArtistList extends Activity{
ArrayList <String> artistNameList=new ArrayList<String>();
ArrayList <String> artistNameLatinList=new ArrayList<String>();
ArrayList <String> artistImageUrlList=new ArrayList<String>();
ArrayList<Artist> artistList=new ArrayList<Artist>();
private ArtistAdapter aa;
private ListView listViewArtists;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.artist_list);
Resources r=getResources();
String [] artistNameListArray=r.getStringArray(R.array.artists);
String [] artistImageUrlListArray=r.getStringArray(R.array.artists_url);
String [] artistLatinList=r.getStringArray(R.array.artistsLatin);
for(int j=0;j<artistNameListArray.length;j++)
{
artistList.add(new Artist(artistNameListArray[j],artistImageUrlListArray[j],artistLatinList[j]));
}
listViewArtists=(ListView)findViewById(R.id.listArtists);
aa=new ArtistAdapter(ArtistList.this, R.layout.artist_listitem, artistList);
listViewArtists.setAdapter(aa);
}
}
listViewのレイアウト
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/listArtists"
android:layout_width="wrap_content"
android:layout_height="370dp"
android:layout_marginTop="50dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_centerVertical="true">
</ListView>
</RelativeLayout>
そしてリストアイテムのレイアウト
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/artist_icon"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_gravity="left" />
<TextView
android:id="@+id/artistName"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:layout_toRightOf="@+id/artist_icon"
android:fadingEdge="vertical"
android:padding="10dp"
android:scrollbars="vertical"
android:textSize="25sp" />
</RelativeLayout>
ただし、アプリケーションを実行すると、画像が表示されず、エラーも発生しませんでした。画像は、アプリケーションフォルダのフォルダ画像にあります。