2016-09-23 5 views
1

나는 을 포함하는 사용자 정의 listview을 가지고 있습니다. bestand_type_liste 레이아웃의 코드에서 다음과 같이 텍스트 뷰가목록보기의 텍스트 뷰를 만드는 방법

bestand_type_liste 클릭 할

BestandTypAdapter bestandTypAdapter = new BestandTypAdapter(getActivity(), R.layout.bestand_type_liste, dataList); 
li.setAdapter(bestandTypAdapter); 

하고 : 다음에

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
android:id="@+id/layout_depots_typ" 
android:padding="5dip" > 

<TableRow 
    android:paddingRight="10dip" 
    android:paddingLeft="10dip" 
    > 

    <TextView 
     android:id="@+id/BESTAND_TYP_NAME" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="left" 
     android:layout_weight="0.50" 
     android:clickable="true"/> <<================= 

I는 다음과 같이 adapter에리스트 뷰를 설정 getView()adapter 메서드 TexView과 연결된 onClickListener을 사용하므로 이름을 클릭 할 때 다음과 같이 위치가 logCat에 표시됩니다

holder.name.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Log.i("", "position_ : " + pos); 
      } 
     }); 

문제는, 내가이 문제를 해결하는 방법을

+0

: 클릭을 = "true"를'textView'로 변경하십시오. –

+0

그냥 질문 : 왜 "holder.name.set ..."및 "myTextView.set ..."? –

답변

1

는 그냥 텍스트 뷰에 대해이 속성을 추가하려고로 나타납니다 listview 항목 아무것도 클릭 할 때 :

android:focusable="false" 
+0

실제로 여전히 문제가 지속됩니다 – user2121

+0

코드에 대한 자세한 정보를 제공하십시오. – alway5dotcom

0

어레이 어댑터의 예는 주로 활동입니다.

public class ListViewMain extends AppCompatActivity { 
private ArrayList<BrandModel> alBrand; 
private ListView list; 
private CustomAdapter custAdapter; 
private AdapterView.OnItemClickListener messageClickedHandler; 
private View vHeader; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    init(); 
    setupDefaults(); 
    setupEvents(); 
} 

public void init() { 
    //list view 
    list = (ListView) findViewById(R.id.listView); 
    //Array list 
    alBrand = new ArrayList<>(); 
    //Custom Adapter 
    custAdapter = new CustomAdapter(this, R.layout.textlistview, alBrand); 
    //View 
    vHeader = getLayoutInflater().inflate(R.layout.listviewheader, null, false); 
} 

public void setupDefaults() { 
    addBrandAndAdapter(); 
} 

public void addBrandAndAdapter() { 
    alBrand.add(new BrandModel(getResources().getString(R.string.And), R.drawable.android)); 
    alBrand.add(new BrandModel(getResources().getString(R.string.Mac), R.drawable.apple)); 
    alBrand.add(new BrandModel(getResources().getString(R.string.Tizen), R.drawable.insta)); 
    alBrand.add(new BrandModel(getResources().getString(R.string.window), R.drawable.windows)); 
    list.addHeaderView(vHeader); 
    list.setAdapter(custAdapter); 
} 

public void setupEvents() { 
    messageClickedHandler = new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView parent, View view, int position, long id) { 
      Toast.makeText(getApplicationContext(), "Click ListItem Number " + position, Toast.LENGTH_LONG).show(); 
      System.out.println("Selected"); 
     } 
    }; 
    list.setOnItemClickListener(messageClickedHandler); 
} 

}

  • ArrayAdapter와

    public class CustomAdapter extends ArrayAdapter<BrandModel> { 
    ArrayList<BrandModel> alBrand = new ArrayList<>(); 
    
    public CustomAdapter(Context context, int tvResId, ArrayList<BrandModel> alObjects) { 
        super(context, tvResId, alObjects); 
        alBrand = alObjects; 
    } 
    
    @Override 
    public int getCount() { 
        return super.getCount(); 
    } 
    
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
        View add = convertView; 
        BrandHolder holder = null; 
        if (add == null) { 
         LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
         add = inflater.inflate(R.layout.textlistview, null); 
         holder = new BrandHolder(); 
         holder.tvName = (TextView) add.findViewById(R.id.tvName); 
         holder.ivImage = (ImageView) add.findViewById(R.id.ivIcon); 
         add.setTag(holder); 
    
        } else { 
         holder = (BrandHolder) add.getTag(); 
        } 
        holder.tvName.setText(alBrand.get(position).getStrBrdName()); 
        holder.ivImage.setImageResource(alBrand.get(position).getImgBrdLogo()); 
        return add; 
    } 
    
    static class BrandHolder { 
        TextView tvName; 
        ImageView ivImage; 
    } 
    

    }

    당신은`안드로이드 설정할 필요가 없습니다
  • +0

    괜찮지 만 내부에서 getView()를 수행하고 싶습니다. – user2121

    +0

    getView 메소드를 @ user2121에 두지 않거나 전체 코드를 입력하십시오. –

    +0

    또는 시도하십시오. getView() 메서드의 OnItemClickListener @ user2121 –

    관련 문제