我有一个ListView地方,列表中的每个元素都包含一个TextView和两个不同的按钮.像这样的东西:
ListView
--------------------
[Text]
[Button 1][Button 2]
--------------------
[Text]
[Button 1][Button 2]
--------------------
... (and so on) ...
Run Code Online (Sandbox Code Playgroud)
使用此代码,我可以OnItemClickListener为整个项目创建一个:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> list, View view, int position, long id) {
Log.i(TAG, "onListItemClick: " + position);
}
}
});
Run Code Online (Sandbox Code Playgroud)
但是,我不希望整个项目是可点击的,而只是每个列表元素的两个按钮.
所以我的问题是,如何使用以下参数为这两个按钮实现onClickListener:
int button (单击了元素的哪个按钮)int position (这是按钮单击发生的列表中的元素)更新:我找到了一个解决方案,如下面的答案中所述.现在我可以通过触摸屏点击/点击按钮.但是,我无法使用轨迹球手动选择它.它总是选择整个列表项,并从那里直接进入下一个列表项忽略按钮,即使我设置.setFocusable(true)和setClickable(true)按钮getView().
我还将此代码添加到我的自定义列表适配器:
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return false;
} …Run Code Online (Sandbox Code Playgroud) 我在listview上遇到了麻烦.它的项目(行)有图像按钮.imagebutton有"android:onClick"所以这个onclick事件正在运行,但点击行不起作用.如果我从行项目中删除图像按钮,单击行工作(列表视图具有正确的onclick列表器).我该如何解决?当用户点击图像按钮和标准点击事件时,我需要onclick事件,当用户选择行时(不单击图像按钮但单击该行)
我的列表视图:
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/restaurants_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:divider="@color/list_devider"
android:dividerHeight="1dp"
android:cacheColorHint="@color/list_background" />
Run Code Online (Sandbox Code Playgroud) 我正在尝试将listview放在listviewitem中.内部列表视图不应该是可滚动的,而是需要显示其所有行的所需大小.有更好的方法吗?表,网格,......?我现在面临的问题是内部列表视图没有占用它所需的空间,因此它在第一个列表项的末尾被切断.如果我尝试滚动,只是外部列表视图滚动这正是我想要的.
谢谢,我的最终解决方案是
LinearLayout layout = (LinearLayout) row.findViewById(R.id.LLBroadcasts);
layout.removeAllViews();
for (Item b : bs.getItems()) {
View child = _inflater.inflate(R.layout.item_row, null);
TextView tvTitle = (TextView) child.findViewById(R.id.TVItemTitle);
tvTitle.setText(b.getTitle());
TextView tvDesc = (TextView) child.findViewById(R.id.TVItemDescription);
tvDesc.setText(b.getDescription());
layout.addView(child);
}
Run Code Online (Sandbox Code Playgroud) 我有一个listView,其中每行在行布局中都有一个按钮.但是,这似乎使行本身无法点击.如何使按钮和行都可以点击?
谢谢.
我想获取所点击行的值/ ID.如果选择该行,这可以正常工作.但是,如果我只是尝试单击内部按钮,则所选客户为空.我如何在此处执行命令参数.
我试过这个看到以下问题的答案:
这是代码:
<Grid>
<ListView ItemsSource="{Binding Path=Customers}"
SelectedItem="{Binding Path=SelectedCustomer}"
Width="Auto">
<ListView.View>
<GridView>
<GridViewColumn Header="First Name">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Margin="6,2,6,2">
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Address">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Margin="6,2,6,2">
<Button Content="Address" Command="{Binding Path=DataContext.RunCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
public class VM : ViewModelBase
{
public RelayCommand RunCommand { get; private set; }
private ObservableCollection<Customer> _Customers;
public ObservableCollection<Customer> Customers
{
get { return _Customers; }
set …Run Code Online (Sandbox Code Playgroud) 我有一个ListView.点击列表项我开始了Activity.现在我添加了一个Buttonon ListView和onclick一个按钮,我想开始另一个活动.添加按钮后,我可以单击按钮并启动一个活动,但现在我无法单击列表项.listview的项目发生了什么?
android ×5
listview ×4
button ×1
buttonclick ×1
imagebutton ×1
java ×1
mvvm ×1
mvvm-light ×1
onitemclick ×1
wpf ×1
wpfdatagrid ×1