当用户单击ListView中的不同视图时,如何实现不同的行为?
-
29-10-2019 - |
题
我是Android开发的新手,所以这是一个基本问题。
我想实现与“联系人”应用程序相同的行为。您有一个带有一系列联系人的ListView |电话图标。单击联系人姓名时,有一种行为,而单击电话图标时,有另一种行为。
这是我的代码。 非常感谢您的帮助。
总而言之,这种方法有什么问题
开关(v.getId()){ 案例R.id.imageButtonAction:
活动分类 通用标签
活动xml 通用标签
行xml
public class CompaniesActivity extends Activity {
MyApp app;
ListView listCompanies;
Cursor cursor;
// Adapter and its corresponding FROM and TO statements. The number and sequence of the arguments must match in FROM / TO arguments.
SimpleCursorAdapter adapter;
static final String[] FROM = { MenuNavigationData.C_COMPANY, MenuNavigationData.C_DESCRIPTION};
static final int[] TO = { R.id.textCompany, R.id.textDescription }; //
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.companies);
//Gets a reference to the application
app = (MyApp) getApplication();
// Find your views
listCompanies = (ListView) findViewById(R.id.listCompanies);
addButton = (Button) findViewById(R.id.buttonAdd);
// Add actions to user interaction
listCompanies.setOnItemClickListener(new OnItemClickListener() {
@Override
**public void onItemClick(AdapterView<?> arg0, View v, int position, long id) {
switch (v.getId()) {
case R.id.imageButtonAction:
startActivity(new Intent(app, InstructionsActivity.class));
break;
default:
int i = adapter.getItemViewType(position);
startActivity(new Intent(app, EditMenuNavigationActivity.class));
break;
}**
}
});
}
解决方案 2
一种新的更好的方法,可以用更少的代码优雅地解决此问题!!!
经过以下修改,用户界面的响应速度更快,不再出现双击问题。:)
简单得多的代码要少得多!
对行xml的修改
插入线性布局以包装两个
在此线性布局中,插入名为android:onClick=“ editCompanyClick”的标签
这是将在“活动”中调用的点击处理程序。
插入线性布局以包装
在此线性布局中,插入名为android:onClick=“ dialClick”的标签
这是将在“活动”中调用的点击处理程序。
对活动类的修改
删除以前的代码
通用标签
插入代码
通用标签
行xml
通用标签
其他提示
您的onItemClick()回调函数既可以接收特定的视图,也可以接收其位置(从0开始),这些都可以帮助您确定单击了哪个视图。该位置是添加项的索引,对于更复杂的场景,您可以查看.setTag(Object o),并使用getTag()从回调中检索它。
我终于找到了解决方案。 这样就解决了这个问题。但是又增加了一个。正如预期的那样,当用户单击不同的视图(TextView或ImageView)时,ListView现在的行为有所不同。 但是似乎没有反应。我必须“双击”才能触发company.setOnClick或Dial.setOnClick。有什么建议吗?
//向用户交互添加操作 通用标签