- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下 XML 布局:
目前我只能单击 EditText 下方的“添加”按钮,即使我已经实现并覆盖了扩展 ListActivity 父类(super class)中的“OnListViewClick”方法。
我认为这是将按钮与 ListView 一起使用时的焦点问题。
希望有人能告诉我如何设置 XML 布局,以便我可以同时单击按钮和 ListView。
OnItemListClick 方法代码:
package com.example.flybase2;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ListActivity;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.text.Editable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
public class ShoppingList extends ListActivity implements OnClickListener {
Button AddItem;
ListView showItems;
SimpleCursorAdapter cursorAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.shoppinglistlayout);
AddItem = (Button) findViewById(R.id.btnAddItem);
showItems = (ListView)findViewById(android.R.id.list);
AddItem.setOnClickListener(this);
setList();
}
@Override
public void onClick(View clickedAdd) {
AlertDialog.Builder builder = new AlertDialog.Builder(ShoppingList.this);
builder.setTitle("Enter Item Details:");
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
final EditText titleBox = new EditText(this);
titleBox.setHint("Item Name:");
layout.addView(titleBox);
final EditText quantityBox = new EditText(this);
quantityBox.setHint("Item Quantity");
layout.addView(quantityBox);
final EditText priceBox = new EditText(this);
priceBox.setHint("Item Price.");
layout.addView(priceBox);
builder.setView(layout);
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
try
{
Editable valueItem = titleBox.getText();
Editable valueAmount = quantityBox.getText();
Editable valuePrice = priceBox.getText();
String itemDescription = valueItem.toString();
String s = valueAmount.toString();
int itemAmount = Integer.parseInt(s);
String a = valuePrice.toString();
int itemPrice = Integer.parseInt(a);
DBHandlerShop addItem = new DBHandlerShop(ShoppingList.this, null, null);
addItem.open();
addItem.insertItems(itemDescription, itemAmount, itemPrice);
addItem.close();
}
catch(Exception e)
{
Dialog e1 = new Dialog(ShoppingList.this);
e1.setTitle("Item unsuccesfully added");
TextView txt = new TextView(ShoppingList.this);
txt.setText("Success");
e1.setContentView(txt);
e1.show();
}
finally
{
Dialog e = new Dialog(ShoppingList.this);
e.setTitle("Item succesfully added.");
TextView txt = new TextView(ShoppingList.this);
txt.setText("Success");
e.setContentView(txt);
e.show();
setList();
}
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
builder.show();
}
@Override
protected void onListItemClick(ListView l, View v, int position, long idd) {
super.onListItemClick(l, v, position, idd);
final CharSequence[] items = {"Edit Appointment Details", "Delete Appointment"};
Builder alertDialogBuilder = new AlertDialog.Builder(ShoppingList.this);
alertDialogBuilder.setTitle("Appointment Options:");
alertDialogBuilder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if (items[item].equals("Edit Appointment Details")) {
}
else if (items[item].equals("Delete Appointment")) {
}
}
});
alertDialogBuilder.show();
}
private void setList() {
DBHandlerShop DBShop = new DBHandlerShop(this, null, null);
DBHandlerShop searchItems = new DBHandlerShop(this, null, null);
searchItems.open();
Cursor cursor = searchItems.getItems();
startManagingCursor(cursor);
String [] from = new String [] {DBShop.KEY_ITEMSHOP, DBShop.KEY_ITEMNUM, DBShop.KEY_ITEMPRICE};
int [] to = new int [] {R.id.txtSetItem, R.id.txtSetAmount, R.id.txtSetPrice};
cursorAdapter = new SimpleCursorAdapter(this, R.layout.setshoppinglist, cursor, from, to);
showItems.setAdapter(cursorAdapter);
}
这是我的 XML 代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="84dp"
android:orientation="horizontal" >
<ImageView
android:id="@+id/imgLink"
android:layout_width="78dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@drawable/viewcon" />
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="75dp"
android:gravity="center"
android:text="Shopping List"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="35sp" />
</LinearLayout>
<TextView
android:id="@+id/txtItemDes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Item To Add To The List:"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/inputAppointName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="Enter A Name" >
<requestFocus />
</EditText>
<Button
android:id="@+id/btnAddItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Add" />
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
最佳答案
在聊天中,您发布了 ListView 中行的 XML。行布局中的一个 LinearLayouts 是可点击的 (android:clickable="true"
),这将消耗触摸事件,阻止它到达 onListItemClick()
。只需删除此行即可。
添加
我建议采用稍微不同的方法。很明显,您想要一个可检查的自定义行布局(通过单击行上的任意位置)。我发布了一个详细的答案:CheckedTextView checkmark in ListView row not showing up ,前阵子有一个vague tutorial在这里(您需要单击“Begemot”库的链接。)
关于java - 停止窃取 ListView 焦点的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14818424/
说我有 some text google 我想给h3附加一个点击事件 $("h3").click(function(){ $(this).slideDown(); return false
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 10年前关闭。 Improve this qu
据说当您使用 ssl 时,您可以防止中间人从服务器窃取信息到客户端,反之亦然。在我的例子中,窃取了 jsonwebtoken。我还从其他答案中了解到,ssl 使用私钥和公钥。私钥存储在服务器上,公钥提
我已经阅读了 Stack Overflow 上的其他问题,但没有找到这个问题的明确答案: 是什么阻止了攻击者通过 JS 窃取用户的 CSRF token ?他不能直接找到 CSRF 元素并用 JS 获
我认为有人在使用 iframe 窃取我的内容。我的网站是一个论坛,一个用户刚刚向我报告了他们。 如果其他人这样做,我如何以编程方式(php、JavaScript、jQuery、HTML)找到他们的网站
我正在使用 SSL 传输所有数据。 HTTP 已完全禁用。除了恶意软件,或者访问某人的物理机器(这两者都很难从服务器端阻止),我不知道攻击者如何窃取登录 cookie。 因此,不用担心窃取登录 coo
有一个 QQuickPaintedItem 带有重载的鼠标事件处理程序: void Plotter::mousePressEvent(QMouseEvent *event) { qDebug(
我正在学习 Caja,我对“this”-stealing 的概念感到困惑: Another security vulnerability that Caja addresses is called “
如果使用客户端流,则回调 URL 包含访问 token 。那么如果回调URL是通过HTTP发送的,是不是很容易被捕获和滥用。 如果我的应用程序的用户 2 获得用户 1 的访问 token ,他就可以访
http://jsfiddle.net/wzew9/ #menu { width: 1001px; height: 34px; padding: 0; margin: 0; b
我实现了 OnTouchEvent(我需要对 Action.MOVE 和 Action.Up 使用react)和 OnClick,但它从未进入 OnClick。 OnTouch 窃取了事件。如何解决这
当 SplashScreen 关闭时(手动或通过 AutoClose),它会在淡出动画期间窃取 MainWindow 的焦点。这会导致主窗口的标题从事件切换到非事件(灰色)再到事件。有什么技巧可以防止
使用其他用户在受信任站点植入的 javascript 函数很容易窃取 session ID cookie。针对这种攻击有哪些可能的反制措施? 在客户端拒绝所有 javascript 脚本可能很困难,因
我有一个网站想要为登录用户提供 YouTube 视频内容(我自己负责以 SSO 方式登录用户)。 因此,我们的想法是视频只能在嵌入到页面中时才能看到(例如以 iFrame 或类似方式)。复制 URL
我在另一个 NSView 中有几个类 MyView(NSView 的子类)的 View 。 MyView 实现 -mouseEntered:, -mouseExited:, -mouseDown:,
我是 flatbuffer 的新手,我想知道是否可以完全(不是 const*)访问 flatbuffers::Vector 中的数据。看看下面的例子,我想窃取 img2::mem::data 的所有权
我有一个带有用户控件的 ASP.Net 页面。页面的提交按钮在用户控件内。页面本身(在用户控件之外)有一个 ImageButton。每当我按回车键提交表单时,它总是执行 ImageButton 单击而
我在Unity中编写了自己的组件,它实现了IBeginDragHandler、IDragHandler和IDropHandler。我想添加一个 UnityEngine.UI 附带的 EventTrig
我最近开始使用 knockout.js 和 sammy.js 来使我的应用现代化。但是我遇到了一些问题。 我在页面上有一些有效链接 - 用户应该实际导航到该位置,而不是使用 sammy.js 模仿导航
我已将 HTML 模板上传到 themeforest,但我发现有些网站免费提供完整的源代码。因为它是 HTML,anycone 可以轻松复制它。如果用户在其他网站(跟踪 IP)上托管我的模板而无需购买
我是一名优秀的程序员,十分优秀!