<!-- First finding which page is related to the survey. This is a bit odd but I couldn't find any other way!! -->
<t t-set="pages" t-value="dict((l.id, l.page_id.id) for l in user_input.user_input_line_ids).values()" />
<!-- Then print the score per each page -->
<t t-foreach='pages' t-as='p'>
<t t-set="page_score" t-value="sum([(uil.quizz_mark or 0.0) if uil.page_id.id == p else 0.0 for uil in user_input.user_input_line_ids])" />
<div> You scored <t t-esc="page_score" /> points in page <t t-esc="p" />.</div>
</t>
删除部分数据库助手:
package com.dharquissandas.budget;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.afollestad.materialdialogs.color.ColorChooserDialog;
import java.util.ArrayList;
import static android.R.attr.button;
import static android.R.attr.data;
public class tab3expense extends Fragment {
private static final String TAG = "tab3expense";
DatabaseHelper mDatabaseHelper;
private ListView mListView;
View rootView;
Cursor expensedata;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.tab3expense, container, false);
return rootView;
}
@Override
public void onActivityCreated( Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mListView = (ListView) rootView.findViewById(R.id.listViewexpense);
mDatabaseHelper = new DatabaseHelper(getActivity());
populateListView();
}
private void populateListView() {
Log.d(TAG, "populateListView: Displaying data in the ListView.");
expensedata = mDatabaseHelper.getexpenseData();
SimpleCursorAdapter sca = new SimpleCursorAdapter(getActivity(), android.R.layout.simple_list_item_1, expensedata, new String[]{DatabaseHelper.EXPENSE_AMOUNT}, new int[]{android.R.id.text1}, 0);
mListView.setAdapter(sca);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
int csrpos = expensedata.getPosition();
expensedata.moveToPosition(i);
displayNoteDate(
expensedata.getString(expensedata.getColumnIndex(DatabaseHelper.EXPENSE_NOTES)),
expensedata.getString(expensedata.getColumnIndex(DatabaseHelper.EXPENSE_DATE)));
expensedata.moveToPosition(csrpos);
}
});
}
@Override
public void onDestroy() {
super.onDestroy();
expensedata.close();
}
public void displayNoteDate(String noteContent, String dateValue) {
MaterialDialog.Builder builder= new MaterialDialog.Builder(getActivity())
.title("Expense Information")
.content("Note: "+noteContent+"\nDate: "+ dateValue)
.positiveText("edit")
.negativeText("delete")
.neutralText("close")
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
Toast.makeText(getActivity(),"EDIT",Toast.LENGTH_LONG).show();
}
})
.onNeutral(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
Toast.makeText(getActivity(),"CLOSE",Toast.LENGTH_LONG).show();
}
})
.onNegative(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
Toast.makeText(getActivity(),"DELETE",Toast.LENGTH_LONG).show();
}
});
builder.show();
}
}
我创建了一个对话框,当单击特定列表视图项时,该对话框显示有关该值的额外信息。如您所见,我有一个删除按钮,但不知道如何调用删除功能。如果你可以帮助我提供我的代码,那将是很好的因为我对android编程相当新。我添加了更多代码,以便您可以告诉我该怎么做。
答案 0 :(得分:0)
如果列表中的数据与SQL数据完全相同,则可以通过其ID删除它们。 我相信你在尝试删除该行/项之前标记列表行。 首先记录deletedRows变量,以便知道它所拥有的id /位置。如果它保持位置,您需要做的是使用该位置查询数据库并删除sqlite数据。
答案 1 :(得分:0)
您的问题的答案与您的问题无关。我希望这可以成为未来Stack Overflow读者的一个教训,他们愿意提问。
你花时间思考如何提出一个问题,说明你的删除工作原因,没有花时间去尝试,或者看看为什么它不起作用。
当被问到一个简单的问题(LOG)时,你立即产生了关键信息:Null Pointer Exception。
你可以谷歌那是什么(如果你不确定),但实质上,你试图访问一些没有任何意义的东西。日志中的错误消息甚至会提示您:
尝试在空对象引用上调用虚拟方法'android.text.Editable android.widget.EditText.getText()'
听起来令人困惑,但实际上它告诉你,你试图在 null 对象引用上访问getText()
。 A.k.a。:你的mAmountExpense
可能是空的。因此,您无法访问或使用它,因为它是null。它什么都没有。
可能是因为你没有做findViewById()
?