문제

사용자 정의 어댑터를 사용하여 ListView 행에 세 개의 텍스트 뷰가 있고 행을 클릭하면 선택한 텍스트보기의 클릭 이벤트를 수행하고 싶습니다.

아래의 샘플 코드는 클릭 이벤트입니다.먼저 클릭으로 리스너가 설정되고 두 번째 클릭만으로 실제 클릭 이벤트가 발생합니다. 첫 번째 클릭 자체에서 찾을 수 있습니다.가능합니까?

listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapter, View view,      int pos, long id) {

                    final Order orderBooking = (Order)adapter.getItemAtPosition(pos);

                    // SKU listener
                    final TextView tvSkuId = (TextView) view.findViewById(orderBooking.getSelectedSkuId());
                    tvSkuId.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            onSkuClickListener(view, orderBooking);
                        }
                    });

                    // SO listener
                    final TextView tvSoId = (TextView) view.findViewById(orderBooking.getSelectedSoId());
                    tvSoId.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            onSoClickListener(view, orderBooking);
                        }
                    });

                    // OR listener
                    final TextView txtOrId = (TextView) view.findViewById(orderBooking.getSelectedOrId());
                    //onOrClickListener(view, orderBooking);
                    txtOrId.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            onOrClickListener(view, orderBooking);
                        }
                    });
            }
        });
.

도움이 되었습니까?

해결책

초기화시 클릭 목록을 설정하면됩니다.데이터를보기에 바인딩 할 때 어댑터에서 가져 가야합니다.코드가 잘못되었으므로 사용자가 목록의 행을 클릭 할 때마다보기를 초기화합니다.

다른 팁

GetView 메소드에서 Adapater에서 해결하십시오.모든 텍스트보기에 대해 OnClick Listner를 설정하십시오.

@Override
public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {

    List<SectionObj> article = (List<SectionObj>) children.get(groupPosition);

    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(R.layout.listchildlayout_galleryview, null);
    }       
     Gallery gallery = (Gallery) convertView.findViewById(R.id.customviewgallery);
     gallery.setAdapter(new AddImgAdp(context, article, groupPosition ));
     gallery.setOnItemClickListener(mOnGalleryClick);

    return convertView;
}

private OnItemClickListener mOnGalleryClick = new OnItemClickListener(){

    @Override
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {


    }       
};
.

위의 내용은 갤러리보기입니다.TextView 을 제외하고는 동일한 작업을 수행하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top