android-listview 위치별로 항목보기 가져 오기
사용자 지정 어댑터 (기본 어댑터)가있는 목록보기가 있습니다. 위치별로 목록보기에서보기를 원합니다. 시도 mListView.getChildAt(position)했지만 작동하지 않습니다. 위치별로 항목보기를 얻으려면 어떻게해야합니까?
이것을 사용하십시오 :
public View getViewByPosition(int pos, ListView listView) {
final int firstListItemPosition = listView.getFirstVisiblePosition();
final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1;
if (pos < firstListItemPosition || pos > lastListItemPosition ) {
return listView.getAdapter().getView(pos, null, listView);
} else {
final int childIndex = pos - firstListItemPosition;
return listView.getChildAt(childIndex);
}
}
ListView의 행보기는 재사용이 가능하기 때문에 ListView에서 보이는보기 만 가져올 수 있습니다. 사용 mListView.getChildAt(0)하면 첫 번째 눈에 보이는보기를 얻을 수 있습니다. 이보기는 위치에있는 어댑터의 항목과 연관됩니다 mListView.getFirstVisiblePosition().
ListView가 그려지면 행 뷰의 모양을 변경하는 선호되는 방법은 ListView가 가져온 데이터 (Adapter로 전달되는 객체 배열)에서 무언가를 변경하고 getView ()에서이를 고려하는 것입니다. 함수를 호출 한 다음 ListView를 다시 그립니다.
notifyDataSetChanged();
편집 :이 작업을 수행하는 방법이 있지만이 작업을 수행해야하는 경우 문제가 발생할 수 있습니다. 내가 생각할 수있는 엣지 케이스는 거의 없지만 일반적으로 notifyDataSetChanged()및 기타 내장 메커니즘을 사용하는 것이 좋습니다.
편집 2 : 사람들이 저지르는 일반적인 실수 중 하나는이 게시물에 대한 의견 중 하나에서와 같이 사용자가 ListView에서 행을 클릭 / 선택하는 것에 응답하는 자신의 방법을 생각해내는 것입니다. 이를 수행하는 기존 방법이 있습니다. 방법은 다음과 같습니다.
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
/* Parameters
parent: The AdapterView where the click happened.
view: The view within the AdapterView that was clicked (this will be a view provided by the adapter)
position: The position of the view in the adapter.
id: The row id of the item that was clicked. */
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//your code here
}
});
ListView 에는 많은 내장 기능이 있으며 더 간단한 경우를 위해 바퀴를 다시 만들 필요가 없습니다. ListView는 AdapterView를 확장하므로 위의 예에서 와 같이 OnItemClickListener 와 같은 동일한 리스너를 설정할 수 있습니다 .
workignHoursListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,View view, int position, long id) {
viewtype yourview=yourListViewId.getChildAt(position).findViewById(R.id.viewid);
}
});
Listview lv = (ListView) findViewById(R.id.previewlist);
final BaseAdapter adapter = new PreviewAdapter(this, name, age);
confirm.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
View view = null;
String value;
for (int i = 0; i < adapter.getCount(); i++) {
view = adapter.getView(i, view, lv);
Textview et = (TextView) view.findViewById(R.id.passfare);
value=et.getText().toString();
Toast.makeText(getApplicationContext(), value,
Toast.LENGTH_SHORT).show();
}
}
});
참고URL : https://stackoverflow.com/questions/24811536/android-listview-get-item-view-by-position
'Program Club' 카테고리의 다른 글
| 쉼표를 구분 기호로 사용하여 여러 행을 하나로 변환 (0) | 2020.10.30 |
|---|---|
| jQuery로 토글을 클릭하십시오. (0) | 2020.10.30 |
| CENTOS 5.5에 git을 어떻게 설치할 수 있습니까? (0) | 2020.10.30 |
| C의 printf 형식 문자열에 % c와 % s가 모두있는 이유는 무엇입니까? (0) | 2020.10.30 |
| 자식 양식이 활성 상태 일 때 부모 양식을 비활성화하는 방법은 무엇입니까? (0) | 2020.10.30 |