我一直在尝试用Android Studio制作一个待办事项列表应用程序。目的是在顶部有一个“添加新任务”按钮,它会打开一个对话框,我可以通过这个对话框输入新任务。然后任务会出现在按钮下方的列表中。
问题是按钮一直出现在列表中的每个任务后(重复的按钮是不可点击的)
问题截图
这是我的代码:
public class ListActivity extends Activity {
// Declare variables
Button button;
private TaskDbHelper mHelper;
private ArrayAdapter<String> mAdapter;
private ListView mTaskListView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the view from listview_main.xml
setContentView(R.layout.activity_list);
// Locate the button in activity_main.xml
button = (Button) findViewById(R.id.NewTaskButton);
mHelper = new TaskDbHelper(this);
mTaskListView = (ListView) findViewById(R.id.listview);
updateUI();
NewMethod();
}
public void NewMethod() {
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
final EditText taskEditText = new EditText(ListActivity.this);
AlertDialog alertDialog = new AlertDialog.Builder(ListActivity.this).create();
alertDialog.setTitle("Add a new item");
alertDialog.setMessage("What item would you like to add?");
alertDialog.setView(taskEditText);
alertDialog.setButton("Add item", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// here you can add functions
String task = String.valueOf(taskEditText.getText());
SQLiteDatabase db = mHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(TaskContract.TaskEntry.COL_TASK_TITLE, task);
db.insertWithOnConflict(TaskContract.TaskEntry.TABLE,
null,
values,
SQLiteDatabase.CONFLICT_REPLACE);
db.close();
updateUI();
}
});
alertDialog.show();
}
});
}
private void updateUI() {
ArrayList<String> taskList = new ArrayList<>();
SQLiteDatabase db = mHelper.getReadableDatabase();
Cursor cursor = db.query(TaskContract.TaskEntry.TABLE,
new String[]{TaskContract.TaskEntry._ID, TaskContract.TaskEntry.COL_TASK_TITLE},
null, null, null, null, null);
while (cursor.moveToNext()) {
int idx = cursor.getColumnIndex(TaskContract.TaskEntry.COL_TASK_TITLE);
taskList.add(cursor.getString(idx));
}
if (mAdapter == null) {
mAdapter = new ArrayAdapter<>(this,
R.layout.activity_list,
R.id.task_title,
taskList);
mTaskListView.setAdapter(mAdapter);
} else {
mAdapter.clear();
mAdapter.addAll(taskList);
mAdapter.notifyDataSetChanged();
}
cursor.close();
db.close();
}
}
以下是xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff">
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
android:divider="#C2AF00"
android:dividerHeight="3sp"
android:layout_below="@+id/task_title"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="14dp" />
<TextView
android:id="@+id/task_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello"
android:textSize="20sp"
android:layout_below="@+id/NewTaskButton"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="32dp" />
<Button
android:id="@+id/NewTaskButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/background_light"
android:text="@string/NewTaskButton"
android:textAppearance="@style/TextAppearance.AppCompat.Body2"
android:textColor="#0089BF"
android:textSize="18sp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="30dp"/>
</RelativeLayout>
当你这么做的时候。。。
mAdapter = new ArrayAdapter<>(this,
R.layout.activity_list,
R.id.task_title,
taskList);
... 您应该传入要显示列表中单个项目的布局作为第二个参数。现在,您正在为每个列表项扩展您发布代码的布局。
您的每行布局可以是任何内容,但重要的是,它应该有一个文本视图,其中包含id
的R.id.task_title
,以匹配您的构造函数调用,以便ListView知道将您提供给它的字符串放在哪里。举个最简单的例子,这可能是您的行布局:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/task_title"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
但是你可以添加一个ViewGroup
作为根元素,并构建你想要的任何布局,只要你为其指定了id
的文本视图存在。
该插件为待办事项列表组件提供了简单的功能。 用法 该插件可以作为 jQuery 插件或使用数据 API 激活。 数据 API 通过向 ul 元素添加 data-widget="todo-list" 来激活插件。如果你需要提供 onCheck 和 onUncheck 方法,请使用 jQuery API。 jQuery jQuery API 提供了更多可自定义的选项,允许开发人员处理待办事项列表中的选
我正在使用AngularJS制作一个简单的待办事项列表应用程序。我实际上使用的是一个ASP.NET MVC模板,但到目前为止,我已经设法通过使用Angular和Bootstrap使所有的工作都正常。
我正在主干网中处理一个示例待办事项列表项目,我想了解框架希望我如何在嵌套列表场景中组织其视图和模型。 为了阐明我的意思,我的单页主干应用程序应该显示待办事项列表。从后端的角度来看,有一个列表资源和一个项目(todo列表中的一个条目)资源。大致如下: 周一的杂务 芹菜 由于我的是Rails 3.2应用程序,我模糊地遵循Railscasts的主干。js教程,这就是我获取当前设计的来源。我很想知道我是否
问题内容: 假设我在一行中有一个和两个按钮,如何在不突出显示整个行的情况下区分哪个按钮被轻拍了? 对于此示例代码,当点击该行中的任何一个按钮时,将同时调用两个按钮的动作回调。 问题答案: 您需要使用 BordlessButtonStyle() 。
我是Android开发新手,所以我只想问一下,我该如何把这些事情做好。我已经做了一个杂货清单应用程序,将显示数量,项目名称和状态(复选框)。以下是我的问题: 列表上的项目或项目名称未显示 如果我有这么多问题,我很抱歉,如果你能帮我回答这些问题,我将不胜感激。谢谢!:) 杂货模型类 GroceryList活动 数组接口 我的XML文件
问题内容: 我需要创建一个RadioButtons列表,但是如果尝试使用ListView进行创建,则可以同时选择所有单选按钮,但是我需要同时选择1个单选按钮。因此,我可以尝试以下代码: 但是布局不会显示所有项目,因为布局很小。我需要滚动条或其他方式来执行任务。请帮帮我。 问题答案: 您应该将其设置为单模式。为此,添加到包含您的布局: