簡體   English   中英

如何添加依賴於ListView中TextView文本的ImageView

[英]How to add ImageView's that are depending on the text of the TextView in a ListView

我有一個自定義ListViewRowItem包含TextViewImageView RowItems將動態添加。

我只想知道如何將ImageView添加到TextView的特定文本。

因此,如果在TextView顯示“Title1”,則應將ImageView “R.drawable.ic_title1”添加到RowItem


這是我的代碼

class SessionItemAdapter extends ArrayAdapter<Map> {

        final ArrayList<Map> values;
        Context context;

        SessionItemAdapter(Context context, ArrayList<Map> values) {
            super(context, R.layout.session_list_layout_row, values);
            this.values = values;
            this.context = context;
        }


        @Override
        public View getView(final int position, View view, ViewGroup parent) {
            LayoutInflater inflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View rowView = inflater.inflate(R.layout.session_list_layout_row, parent, false);

            TextView tv = (TextView) rowView.findViewById(R.id.stepTime);
            final int rowId = (Integer) values.get(position).get("id");
            int beepStringId = getResources().getIdentifier("exercise_typ_" + values.get(position).get("type"), "string", getPackageName());

            rowView.setTag(rowId);

            tv.setText(getResources().getString(beepStringId));
            ImageView image =(ImageView) rowView.findViewById(R.id.imageView2);


                switch(position){

                case 1 : image.setImageResource(R.drawable.ic_title1);
                    break;

                case 2 : image.setImageResource(R.drawable.ic_title2);
                    break;
            }

            ImageButton deleteSession = (ImageButton) rowView.findViewById(R.id.session_item_del);
            deleteSession.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    /*if (!startStopToggle.isChecked()) {*/
                    sessionAdapter.remove(values.get(position));
                    sessionAdapter.notifyDataSetChanged();


                }
            });

            return rowView;
        }

        //in your adapter getAllPlayers() would be something like this
        public List<String> getAllPlayers() {
            List<String> list = new ArrayList<String>();
            for (Map item : values) {
                int beepStringId = context.getResources().getIdentifier("exercise_typ_"
                        + item.get("type"), "string", context.getPackageName());
                String str = context.getResources().getString(beepStringId);
                list.add(str);
            }
            return list;
        }


    }

我嘗試使用帶有positionSwitch語句,但只將ImageView設置為RowItem ,該RowItem位於case寫入的位置。

您可以根據TextView的文本制作一個switch-case語句,如下所示

switch(tv.getText().toString()){

                case "Title1" : image.setImageResource(R.drawable.ic_title1);
                    break;

                case "Title2" : image.setImageResource(R.drawable.ic_title2);
                    break;

                default:
                    //Default image here, if no case found
                break;
}

注意:以上答案要求遵守JRE 1.7

這樣的事情呢。

image.setImageResource(getImageId(this, "ic_" + tv.getText().toString().toLowerCase());

所以基本上你從文本視圖中獲取標題來操作它,使其處於存儲圖像的格式,並調用下面的幫助程序以獲得正確的圖像ID。

public static int getImageId(Context context, String imageName) {
    return context.getResources().getIdentifier("drawable/" + imageName, null, context.getPackageName());
} 

此實例中的解決方案是添加用於獲取和設置ListView對象的各個字段的方法。 例如,由於您的行項中有TextViewImageView ,我們假設您的行對象如下所示:

public class ListObject
{

    public ListObject (String textView, String imageView)
    {
        super();
        this.textView                      = textView;
        this.imageView                     = imageView;
    }

    private String     textView;
    private String     imageView;

    public String getTextView ()
    {
        return textView;
    }

    public void setTextView (String pTextView)
    {
        this.textView = pTextView;
    }

    public String getImageView ()
    {
        return imageView;
    }

    public void setImageView (String pImageView)
    {
        this.imageView = pImageView;
    }
}

實現這些后,您可以根據TextView輕松設置ImageView ,如下所示:

// As an example, let us use the first list item
ListObject listObject = (ListObject) parent.getItemAtPosition(0);

if (listObject.getTextView == "Title1")
{
    listObject.setImageView("NameOfResource");
}
// so on and so forth

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM