1

ListViewRowItem에는 TextViewImageView이 포함되어 있습니다. RowItems이 동적으로 추가됩니다.ListView의 TextView 텍스트에 따라 ImageView를 추가하는 방법

TextView의 특정 텍스트에 ImageView을 추가하는 방법을 알고 싶습니다. 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; 
     } 


    } 

내가 position으로 Switch 문으로 그것을 시도하지만 그건 단지 위치가 case 작성 이잖아에있는 RowItemImageView을 설정합니다.

답변

1

당신은

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; 
} 

다음 주 같은 TextView의 텍스트를 기반으로 switch-case 문을 만들 수 있습니다 대답은 무엇 이런 일에 대한 JRE 1.7을 준수

1

을 필요 이상.

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()); 
} 
1

이 경우에이 솔루션은 점점하고 ListView 개체에 대한 개별 필드를 설정하기위한 방법을 추가하는 것입니다. 당신이 TextView하고 행 항목에 ImageView이 있기 때문에 예를 들어, 우리가 당신의 행 객체가 같이 보입니다 가정하자 다음

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; 
    } 
} 

이 구현되면, 당신은 쉽게 설정할 수 있습니다 ImageView에 따라 TextView 이렇게 :

// 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 
+0

왜 완전히 새로운 개체를 구현합니까? 모든 데이터가 이미 어댑터에 있습니다. – Marcus

관련 문제