【问题标题】:Android ListView control rows clickableAndroid ListView 控件行可点击
【发布时间】:2011-12-06 09:41:51
【问题描述】:

我有一个 ListView,它有 3 行。我想控制可点击的行,例如最初只有第一行可以点击,之后,第二行可以点击,然后第三行可以点击。另外,我想添加这个;在每行单击后,将打开一个带有单个选择项的 AlertDialog。获得选定值后,另一行可以点击。我该如何处理这种情况?请帮帮我。

【问题讨论】:

  • 你用什么作为适配器..我的意思是 ListAdapter,CursorAdapter?
  • 我正在使用BaseAdapter,点击行后,会有一个AlertDialog,其中包含单个选择项。

标签: android listview clickable


【解决方案1】:

当您在列表视图中添加侦听器时,函数 onItemClick 会接收您单击的位置。您可以将一个 int 变量初始化为 0 以了解哪些行可以是 clicable。

类似这样的:

int current_position = 0;

myList.setOnItemClickListener(new OnItemClickListener(){
    @Override
    public void onItemClick(AdapterView<?> parent, View view,int position, long id){
        if(position == 0) //Your stuff (current_position = 1)
        if(position == 1) //
     }
 });

希望这会有所帮助...

【讨论】:

  • 我想我应该用详细的方式解释我的问题。正如我所说的,有 3 行,每次单击行后,我都会创建一个带有单个选择项的 AlertDialog.Builder。您的建议很好,但在我的情况下可能会出现问题,因为在 AlertDialog 打开后,用户可以按“返回”,而我无法获得所选值。除此之外,增加 current_position 可以让用户点击另一行。
【解决方案2】:

最好使用 3 行的 ScrollView 来模拟 ListView。之后,您可以轻松控制每一行的点击事件。

【讨论】:

  • 感谢您的回复,能否举个清晰的例子?
【解决方案3】:

如果您使用的是BaseAdapter,请尝试使用isEnabled api。即使此 api 用于分隔符。您最初可以为第 2 行和第 3 行返回 false,然后根据您的逻辑返回 true。

另一个 api areAllItemsEnabled,为此,您已返回 false

参考:

http://developer.android.com/reference/android/widget/BaseAdapter.html#isEnabled(int) http://developer.android.com/reference/android/widget/BaseAdapter.html#areAllItemsEnabled()

【讨论】:

  • 我用过这种方式,非常感谢。但我也有一个小问题,我有一个超过 3 行的标题,我可以轻松控制哪些行是可点击的,但不是标题。对于第一行,我正在调用 BaseAdapter.isEnabled(0) 并且标题 -1 不起作用。
  • 你打电话给isEnabled是什么意思?所以你说你有 4 行,第一行是标题。所以在这种情况下,标题位于索引 0。或者我错过了一些东西
猜你喜欢
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
  • 2015-11-24
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多