마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

커스텀 리스트뷰 내용 뽑아오는법

0 추천

인터넷의 예제를 보고 커스텀리스트뷰를 만들었는데 ..

 

일반 리스트뷰같은경우 OnItemClickListener에서

 

ArrayList.get(index); 리스트의 내용이 리턴되는데

 

커스텀리스트뷰같은경우 내용물이 많잖아요

 

이미지뷰도 있고 텍스트뷰도 있고 이런 내용은 어떻게 뽑나요 ??

 

제 소스코드는 다음과 같습니다.

 

package com.example.customlistviewtest;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
	ListView listview;
	DataAdapter adapter;
	LayoutInflater mInflater;
	ArrayList<CData> alist;
	Context context;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		alist = new ArrayList<CData>();
		adapter = new DataAdapter(this,alist);
		listview = (ListView) findViewById(R.id.list);
		listview.setAdapter(adapter);
		context = this;
		adapter.add(new CData(this,"가나다","가나다", R.drawable.ic_launcher));
		adapter.add(new CData(this,"123","123", R.drawable.ic_launcher));
		adapter.add(new CData(this,"abc","abc", R.drawable.ic_launcher));
		
		listview.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				
				
				
			}
			
		});
	}
	
	private class DataAdapter extends ArrayAdapter<CData> {
		private LayoutInflater mInflater;
		public DataAdapter(Context context, ArrayList<CData> object) {
			super(context, 0, object);
			mInflater = (LayoutInflater) context
						.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		}

		@Override
		public View getView(int position, View v, ViewGroup parent) {
			View view = null;
			if (v == null) {
				view = mInflater.inflate(R.layout.custom_view, null);
			} else {
				view = v;
			}
			final CData data = this.getItem(position);
			if (data != null) {
				TextView title = (TextView) view.findViewById(R.id.tv1);
				TextView text = (TextView) view.findViewById(R.id.tv2);
				ImageView img = (ImageView) view.findViewById(R.id.img);
				title.setText(data.getTitle());
				text.setText(data.getText());
				img.setImageResource(data.getImg());
			}
			return view;
		}
	}
	
	class CData {
		private String mTitle;
		private String mText;
		private int mImg;
	
		public CData(Context context, String pTitle, String pText, int pImg) {		
			mTitle = pTitle;
			mText = pText;
			mImg = pImg;
		}	

		public String getTitle() {
			return mTitle;
		}

		public String getText() {
			return mText;
		}

		public int getImg() {
			return mImg;
		}
	}
	
}

 

음무 (17,820 포인트) 님이 2014년 2월 6일 질문

1개의 답변

+1 추천
 
채택된 답변
직접 만드셨으면 모를수가 없는 문제같은데요. CData 가 커스텀 리스트뷰 한줄한줄의 내용같네요
안티푸라면 (6,700 포인트) 님이 2014년 2월 6일 답변
음무님이 2014년 2월 6일 채택됨
리스트의 특정 인덱스를 터치했을때 만약 해당 리스트 관련 상세페이지로 이동한다면
인덱스가 아니라 제목등의 내용으로 DB검색해서 상세페이지를 만들려고합니다
그럼 터치시 해당 인덱스의 제목을 알아야하는데 제목은 getTitle로 입력을 해 둔 내용이구요

잘모르겠습니다 ㅠㅠ 리스트 터치시 제목을 리턴받는방법을요 ..
CData data = (CData)arg0.getAdapter().getItem(arg2);
String title = data.getTitle();
Toast.makeText(arg0.getContext(), title, Toast.LENGTH_SHORT).show();
헉억허큐_ㅠ감사합니다 !!!!!!!!!!!!
...