첫 번째 애플리케이션을 구축 중입니다. 이것은 문자 메시지 (SMS)로받은 서버 경보 목록 일뿐입니다. 목록보기 동작 만 있습니다 (클릭에 대한 세부 정보 없음). 나는 그 (것)들을 읽는 것만으로 읽은 항목을 표시 할 수 있기를 원합니다. 내 앱을 열면 old에서 new로 정렬 된 메시지가 표시되고 listView 위치는 listView의 맨 아래로 설정됩니다. 위로 스크롤하면 표시된 항목을 읽음으로 표시하려고합니다.스크롤하는 동안 listView에서 항목을 표시하는 방법?
그리고 나는 이런 식으로했다 :
public class AlertsListFragment extends ListFragment {
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// ...
Cursor c = context.getContentResolver().query(uri, AlertsContract.PROJECTION, selection, selectionArgs, null);
adapter = new AlertAdapter(context, R.layout.row, c, from, to, 0);
setListAdapter(adapter);
ListView listView = getListView();
listView.setSelected(listView.getCount());
lv.setOnScrollListener(new AbsListView.OnScrollListener() {
public void onScrollStateChanged(AbsListView view, int scrollState) { }
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
for (int i = firstVisibleItem; i < firstVisibleItem + visibleItemCount; i++) {
Cursor cursor = (Cursor)view.getItemAtPosition(i);
long id = cursor.getLong(cursor.getColumnIndex(AlertsContract._ID));
String type = cursor.getString(cursor.getColumnIndex(AlertsContract.TYPE));
Log.d("VIEWED", "This is viewed "+ type + " id: " + id);
// here I can get the id and mark the item read
}
}
});
}
}
그러나 나는이 최선의 해결책이 아니라고 생각합니다. 한 가지 문제는 사용자가 목록을 스크롤하지 않을 경우에도 사용자가 목록에서 적어도 3 - 4 개의 항목을 볼 수 있어도 항목이 표시된 것으로 표시되지 않는다는 것입니다.
"표시"된 것과 같은 listView 항목에 대한 이벤트가 있습니까? listView 항목이 listView의 보이는 영역에 도착할 때마다 발생할 수있는 이벤트가 있습니까?