如何知道列表视图的所有项目已在Android中查看?

时间:2013-07-30 11:32:03

标签: android listview

我在android中创建了list-view。 在这里,我需要将一条消息干为“您已查看此列表视图中的所有项目”。

即,在查看列表视图中的所有项目后,自动我需要像上面的消息一样显示,该怎么做?

建议

感谢您宝贵的时间!..

ListFruitActivity.java

public class ListFruitActivity extends ListActivity {

static final String[] FRUITS = new String[] { "Apple", "Avocado", "Banana",
        "Blueberry", "Coconut", "Durian", "Guava", "Kiwifruit",
        "Jackfruit", "Mango", "Olive", "Pear", "Sugar-apple" };

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // no more this
    // setContentView(R.layout.list_fruit);

    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_fruit,FRUITS));

    ListView listView = getListView();
    listView.setTextFilterEnabled(true);

    listView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // When clicked, show a toast with the TextView text
            Toast.makeText(getApplicationContext(),
            ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
        }
    }); }}

2 个答案:

答案 0 :(得分:1)

  

listView.getLastVisiblePosition()

返回适配器数据集中屏幕上显示的最后一项的位置。

listview.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent arg1) {
            //needs to be optimized
            int count = ((ListView) v).getLastVisiblePosition();

            if(count == maxRow)
            {
                //make toast,
            }
            return false;
        }
});

答案 1 :(得分:0)

您可以使用HashMap完成所需内容的简单示例。这是一个快速示例

HashMap map = new HashMap();
map.put("Apple", false);
map.put("Avocado", false);
//same for the rest of your fruit

在onItemClickListener中,您可以使用给定键将地图中的项目值设置为true。

map.put("Apple", true);

同时,您可以检查地图中是否有false个值,如果没有查看过您的所有项目。

另一种方法是在列表中添加自定义对象并设置属性(例如boolean viewed;),并在查看所述列表项时将其设置为true。