通过适配器分配图像 [英] assigning Images through adapter

查看:50
本文介绍了通过适配器分配图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在提出一项医疗申请

I am Making one Medical Application

我想显示处方的ListView,包括药品名称,时间和图像.所有值都来自数据库,除了图像.

I want to show ListView for Prescription including Medicine Name ,Timing and Image.all values are coming from database except images.

如果数据库中的药品类型是平板电脑,则表示我要显示ImgA;如果是注射,则我要在ListView中显示ImgB.

Means if Medicine Type from Database is Tablet than I want to Show ImgA an if Medicine Type if Injection then I want to show ImgB in ListView.

这是我的活动:

public Integer[] Images = {R.drawable.tablet,R.drawable.injection};
public Integer[] ImageId = new Integer[]{} ;

这就是我分配图像的方式:

this is how i Assigning Images :

 Cursor cur = dop.getPrescriptionData();
Integer Length = cur.getCount();
        if(cur!= null && cur.getCount()>0)
        {
            int i = 0;
            if(cur.moveToFirst()){
                do {
                    ImageId = new Integer[Length];
                    if(MedicineType == 1){ImageId[i] = Images[0];}
                    else if(MedicineType == 0){ImageId[i]= Images[1];
                    //other Parameters
                     i++;
                   }
                while (cur.moveToNext());
               }
           }
        }

将值传递给我的适配器:

Passing Values to my Adapter:

PrescriptionAdapter pAdapter = new PrescriptionAdapter(PrescriptionActivity.this,ImageId,MedicineName,MedicineType,MedicineTimings,subMedicineTiming);
        lstPrescription.setAdapter(pAdapter);

这是我的适配器:

public class PrescriptionAdapter extends BaseAdapter {

public Context context;
public ArrayList<String>MedicineNames;
public ArrayList<String>MedicineType;
public ArrayList<String>MedicineTimings;
public ArrayList<String>subMedicineTimings;
public Integer[] ImageId = new Integer[]{};

public PrescriptionAdapter(Context context,Integer[] ImageId,ArrayList<String>MedicineNames,ArrayList<String>MedicineType,
                           ArrayList<String>MedicineTimings,ArrayList<String>subMedicineTimings)
{
    this.context = context;
    this.ImageId = ImageId;
    this.MedicineNames = MedicineNames;
    this.MedicineType = MedicineType;
    this.MedicineTimings  = MedicineTimings;
    this.subMedicineTimings = subMedicineTimings;
}
public int getCount(){return MedicineNames.size();}
public Object getItem(int Position){return null;}
public long getItemId(int Position){return 0;}
public class viewHolder{
    TextView tvMedicineName;
    ImageView imgMedicineType;
    TextView tvMedicineTiming;
    TextView tvSubMedicineTiming;
}
@Override
public View getView(int Position,View Child,ViewGroup Parent)
{
    try
    {
        viewHolder vHolder;
        LayoutInflater inflator;

        if(Child == null)
        {
            inflator = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            Child = inflator.inflate(R.layout.list_prescription_row,Parent,false);
            vHolder = new viewHolder();
            vHolder.tvMedicineName = (TextView)Child.findViewById(R.id.txtMedicineName);
            vHolder.tvMedicineTiming = (TextView)Child.findViewById(R.id.txtMedicineTiming);
            vHolder.tvSubMedicineTiming = (TextView)Child.findViewById(R.id.txtSubMedicineTiming);
            vHolder.imgMedicineType = (ImageView)Child.findViewById(R.id.imgPrescription);
            Child.setTag(vHolder);
        }
        else {vHolder = (viewHolder)Child.getTag();}
        vHolder.tvMedicineName.setText(MedicineNames.get(Position));
        vHolder.tvMedicineTiming.setText(MedicineTimings.get(Position));
        vHolder.tvSubMedicineTiming.setText(subMedicineTimings.get(Position));
        vHolder.imgMedicineType.setImageResource(ImageId[Position]);
        return Child;
    }
    catch (Exception ex)
    {
        ex.printStackTrace();
        return null;
    }

}

}

我在设置图像的getView()中遇到问题:

I am getting issue in getView() for setting Image:

这是我的Logcat:

Here is my Logcat:

05-04 10:58:21.694 15911-15911/com.example.pranita.niramay E/AndroidRuntime: FATAL EXCEPTION: main
                                                                         java.lang.NullPointerException
                                                                             at android.widget.ListView.measureScrapChild(ListView.java:1168)
                                                                             at android.widget.ListView.measureHeightOfChildren(ListView.java:1251)
                                                                             at android.widget.ListView.onMeasure(ListView.java:1160)
                                                                             at android.view.View.measure(View.java:12773)
                                                                             at android.widget.RelativeLayout.measureChild(RelativeLayout.java:579)
                                                                             at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:392)
                                                                             at android.view.View.measure(View.java:12773)
                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4788)
                                                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
                                                                             at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
                                                                             at android.view.View.measure(View.java:12773)
                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4788)
                                                                             at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1374)
                                                                             at android.widget.LinearLayout.measureVertical(LinearLayout.java:663)
                                                                             at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
                                                                             at android.view.View.measure(View.java:12773)
                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4788)
                                                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
                                                                             at android.view.View.measure(View.java:12773)
                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4788)
                                                                             at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1374)
                                                                             at android.widget.LinearLayout.measureVertical(LinearLayout.java:663)
                                                                             at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
                                                                             at android.view.View.measure(View.java:12773)
                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4788)
                                                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
                                                                             at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2110)
                                                                             at android.view.View.measure(View.java:12773)
                                                                             at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1147)
                                                                             at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2642)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                             at android.os.Looper.loop(Looper.java:154)
                                                                             at android.app.ActivityThread.main(ActivityThread.java:4624)
                                                                             at java.lang.reflect.Method.invokeNative(Native Method)
                                                                             at java.lang.reflect.Method.invoke(Method.java:511)
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
                                                                             at dalvik.system.NativeStart.main(Native Method)

如果我从代码中删除了图像部件",则该代码运行正常..在设置ImageView时出现了问题.

If I remove the Image Part from my code,the code is working fine..it gives me issue while setting ImageView.

如何解决????

这是我的xml文件

<!--language:xml-->
><?xml version="1.0" encoding="utf-8"?><!DOCTYPE LinearLayout>
><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/rlListPrescriptionRow"
    android:layout_margin="5dp">
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imgPrescription"
        android:layout_margin="5dp"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/imgPrescription"
        android:typeface="serif"
        android:text=""
        android:textSize="20sp"
        android:textColor="@color/black"
        android:layout_marginLeft="5dp"
        android:id="@+id/txtMedicineName"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txtMedicineName"
        android:id="@+id/txtMedicineTiming"
        android:layout_alignLeft="@+id/txtMedicineName"
        android:textSize="18sp"
        android:typeface="serif"
        android:textColor="@color/black"
        android:text=""
        android:layout_marginTop="5dp"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/txtSubMedicineTiming"
        android:layout_below="@+id/txtMedicineTiming"
        android:textColor="@color/black"
        android:textSize="16sp"
        android:text=""
        android:layout_alignLeft="@+id/txtMedicineTiming"
        android:typeface="serif"
 >       android:layout_marginTop="2dp"/>
></RelativeLayout>



></LinearLayout>

推荐答案

我已解决此问题

我要做的是:我使用Integer Arraylist来存储图像

what i done is: I took Integer Arraylist for storing my Images

在我的主要活动中

 public int[] Images = {R.drawable.imgA,R.drawable.imgB};
 public ArrayList<Integer>ImageId = new ArrayList<Integer>();
 int i = 0;

if(cur.moveToFirst()){
if(MedicineType == 1)
                    {
                        ImageId.add(Images[0]);
                    }
                    else if(MedicineType == 0)
                    {
                        ImageId.add(Images[1]);
                    }    } while(cur.moveToNext());

也在myAdapter中: 我首先将Integer Array更改为Image的Integer Arraylist

also in myAdapter: I jst changed Integer Array to Integer Arraylist for Image

这解决了我的问题

这篇关于通过适配器分配图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆