2015-03-01 3 views
0

У меня есть активность, которая перечисляет данные с listView с изображениями их строк.Как использовать маску изображения с ListView

String[] from = {"subject","img","description","id"}; 
     int[] to = {R.id.tv_subject,R.id.iv_pic, R.id.tv_details, R.id.hide_id}; 

     SimpleAdapter adapter = new SimpleAdapter(ListViewActivity.this,searchResult,R.layout.listview, from, to); 
     mListView.setAdapter(adapter); 

Мой ListView.xml является:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:background="#ffffff" 
android:layout_height="match_parent" 
android:orientation="vertical"> 
<ImageView 
    android:id="@+id/iv_pic" 
    android:layout_gravity="left" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="5dp"/> 
<TextView 
    android:textColor="#000000" 
    android:layout_gravity="center" 
    android:id="@+id/tv_subject" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"  
    android:textSize="15sp" 
    android:textStyle="bold" /> 

    <LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal"> 
    <TextView 

    android:textColor="#000000" 
    android:layout_gravity="right" 
    android:paddingRight="5dp" 
    android:id="@+id/tv_details" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 

    <TextView 
    android:visibility="gone" 
    android:id="@+id/hide_id" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 
</LinearLayout> 

теперь у меня есть часть кода, которые отображают изображение с маской:

ImageView mImageView= (ImageView)findViewById(R.id.img); 
    ImageView mImageView1= (ImageView)findViewById(R.id.img1); 
    Bitmap original = BitmapFactory.decodeResource(getResources(),R.drawable.c); 
    Bitmap mask = BitmapFactory.decodeResource(getResources(),R.drawable.poster); 
    Bitmap result = Bitmap.createBitmap(mask.getWidth(), mask.getHeight(), Config.ARGB_8888); 
    Canvas mCanvas = new Canvas(result); 
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
    paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); 
    mCanvas.drawBitmap(original, 0, 0, null); 
    mCanvas.drawBitmap(mask, 0, 0, paint); 
    paint.setXfermode(null); 
    mImageView.setImageBitmap(result); 

Я хочу, чтобы отобразить каждое изображение в списке с маской (каждое изображение находится в строке, если listview)

ответ

0

Чтобы настроить инфляцию вашего ListView (например, установите «маски»), вы должны подклассировать созданный SimpleAdapter и переопределить метод getView(int position, View convertView, ViewGroup parent).

В этом методе вы проверяете вид, который был нажат, и соответствующим образом раздуйте его, задав нужные вам ImageView и TextViews. А также в этом методе вы будете заполнять данные, соответствующие раздутому представлению.

Отъезд this учебник для большего.

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