Android:如何为Android ListView实现这样的操作?
我的应用程序具有如下功能:
我已完成使用自定义适配器设置值。但现在我想实现这样的功能:添加另一个数据、删除显示数据、转到下一个数据并返回到上一个数据。在所有这些功能中,只有蓝色值应该改变。 (即代码中的 orderStatus)。左一个值 (orderName()) 应保持不变。那么如何实施呢?
如果我要添加新数据,那么它应该被临时存储,因为我想在报告中显示该数据。
在我的应用程序中,我将第一次添加数据,如下代码所示:
getOrder 函数设置 OrderName 和 OrderStatus 的值。
public void getOrders(){
try{
// if(employee)
// {
System.out.println("You are in Employee");
m_orders = new ArrayList<Order>();
payListForEmployee = new String[] {"Tax Code","Pay period Begin","Pay Frequency","Salary/Wage per pay",
"Net or Gross Amount","KS Employee deduction","KS Employee contributions","Child Support deduction","Payroll giving donation"};
Order o[]=new Order[payListForEmployee.length];
System.out.println("The Length is: "+payListForEmployee.length);
for (int i = 0; i < payListForEmployee.length; i++)
{
o[i]=new Order();
o[i].setOrderName(payListForEmployee[i]);
//myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
// for TAXCODE
if(i==0) {
taxCodeValue = PAYEEmployeeDetail.taxCodeFinalValue;
if((taxCodeValue==null)) {
taxCodeValue = "Please select";
}
o[i].setOrderStatus(taxCodeValue);
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
// for Pay Period Frequency
if(i==1) {
//payPeriodValue = myPrefs.getString("payperiod", "12 09 2011");
payPeriodValue = PAYEEmployeeDetail.payPeriodFinalValue;
if((payPeriodValue==null)) {
payPeriodValue = "--/--/----";
}
o[i].setOrderStatus(payPeriodValue);
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
// for Pay frequency
if(i==2) {
//payFrequencyValue = myPrefs.getString("payfrequency", "Weekly");
payFrequencyValue = PAYEEmployeeDetail.payFrequencyFinalValue;
if((payFrequencyValue==null)) {
payFrequencyValue = "Please select";
}
o[i].setOrderStatus(payFrequencyValue);
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
// for salary / wage
if(i==3) {
salaryWageValue = PAYEEmployeeDetail.salaryWageFinalValue;
if((salaryWageValue==null)||(salaryWageValue.equals(""))) {
salaryWageValue = "$0";
}
else{
salaryWageValue = "$"+salaryWageValue;
}
o[i].setOrderStatus(salaryWageValue);
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
// For Gross / Net
if(i==4) {
o[i].setOrderStatus("Gross");
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
// for KS Employee Deduction
if(i==5) {
employeeDeductionValue = PAYEEmployeeDetail.employeeDeductionFinalValue;
if((employeeDeductionValue==null)||(employeeDeductionValue.equals(""))) {
employeeDeductionValue = "0%";
}
o[i].setOrderStatus(employeeDeductionValue);
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
// for KS Employee Contribution
if(i==6) {
employeeContributionValue = PAYEEmployeeDetail.employeeContributionFinalValue;
if((employeeContributionValue==null)||(employeeContributionValue.equals(""))) {
employeeContributionValue = "0%";
}
else{
employeeContributionValue = employeeContributionValue+"%";
}
o[i].setOrderStatus(employeeContributionValue);
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
// for Child Support Deduction
if(i==7) {
childSupportDeductionValue = PAYEEmployeeDetail.childSupportDeductionFinalValue;
if((childSupportDeductionValue==null)||(childSupportDeductionValue.equals(""))) {
childSupportDeductionValue = "$0";
}
else{
childSupportDeductionValue = "$"+childSupportDeductionValue;
}
o[i].setOrderStatus(childSupportDeductionValue);
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
// for Payroll giving donation
if(i==8) {
payrollDonationValue = PAYEEmployeeDetail.payrollDonationFinalValue;
if((payrollDonationValue==null)||(payrollDonationValue.equals(""))) {
payrollDonationValue = "$0";
}
else{
payrollDonationValue = "$"+payrollDonationValue;
}
o[i].setOrderStatus(payrollDonationValue);
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
m_orders.add(o[i]);
//lv.invalidate();
// System.out.println("==> TaXCode Value: "+PAYEEmployeeDetail.taxCodeFinalValue);
// System.out.println("==> PAyPeriod Value: "+PAYEEmployeeDetail.payPeriodFinalValue);
// System.out.println("==> PayFrequency Value: "+PAYEEmployeeDetail.payFrequencyFinalValue);
// System.out.println("==> Salary/Wage Value: "+PAYEEmployeeDetail.salaryWageFinalValue);
// System.out.println("==> Gross/Net Value "+"STATIC VALUE = GROSS");
// System.out.println("==> Employee Deduction Value "+PAYEEmployeeDetail.employeeDeductionFinalValue);
// System.out.println("==> Employee Contribution Value "+PAYEEmployeeDetail.employeeContributionFinalValue);
// System.out.println("==> Child Support Deduction Value "+PAYEEmployeeDetail.childSupportDeductionFinalValue);
// System.out.println("==> PayRoll Donation Value "+PAYEEmployeeDetail.payrollDonationFinalValue);
//
}
// }
// else
// {
// System.out.println("You Are in Employer");
// m_orders = new ArrayList<Order>();
//
// payListForEmployer = new String[] {"Tax Code","Pay period Begin","Pay Frequency","Salary/Wage per pay",
// "Net or Gross Amount","KiwiSaver Member","Employee Deduction","Employee Contributions",
// "Complying Fund Member","Fund Contribution","ESCT Tax Rate","Child Support Deduction","Payroll giving donation"};
//
// System.out.println("The Length is: "+payListForEmployer.length);
//
// Order o[]=new Order[payListForEmployer.length];
// for (int i = 0; i < payListForEmployer.length; i++)
// {
// o[i]=new Order();
// o[i].setOrderName(payListForEmployer[i]);
// o[i].setOrderStatus("Pending");
// m_orders.add(o[i]);
// }
// }
Thread.sleep(100);
Log.i("ARRAY", ""+ m_orders.size());
} catch (Exception e) {
e.printStackTrace();
}
runOnUiThread(returnRes);
}
private Runnable returnRes = new Runnable() {
@Override
public void run() {
if(m_orders != null && m_orders.size() > 0){
m_adapter.notifyDataSetChanged();
for(int i=0;i<m_orders.size();i++)
m_adapter.add(m_orders.get(i));
}
// m_ProgressDialog.dismiss();
m_adapter.notifyDataSetChanged();
}
};
并像这样创建和调用线程:
viewOrders = new Runnable(){
@Override
public void run() {
getOrders();
}
};
thread = new Thread(null, viewOrders, "MagentoBackground");
thread.start();
所以请帮助我给出该逻辑,或者给出一些可以帮助我实现该功能的代码。 谢谢。
My Application has like below functionality:
I have Done to set the Values with the custom adapter. but now i want to implement the functionality as like add another data, delete showing data, go to next data and back to previous data. In all that functionality only the Blue Values should be change. (that is the orderStatus in code). Left One Value (orderName()) should remain the same. Then how to implement that ?
If i am adding the new data then that should be temporary stored as i want to show that data in to report.
In My Application i am going to add data first time AS like below code:
getOrder function to set the Value of the OrderName and OrderStatus.
public void getOrders(){
try{
// if(employee)
// {
System.out.println("You are in Employee");
m_orders = new ArrayList<Order>();
payListForEmployee = new String[] {"Tax Code","Pay period Begin","Pay Frequency","Salary/Wage per pay",
"Net or Gross Amount","KS Employee deduction","KS Employee contributions","Child Support deduction","Payroll giving donation"};
Order o[]=new Order[payListForEmployee.length];
System.out.println("The Length is: "+payListForEmployee.length);
for (int i = 0; i < payListForEmployee.length; i++)
{
o[i]=new Order();
o[i].setOrderName(payListForEmployee[i]);
//myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
// for TAXCODE
if(i==0) {
taxCodeValue = PAYEEmployeeDetail.taxCodeFinalValue;
if((taxCodeValue==null)) {
taxCodeValue = "Please select";
}
o[i].setOrderStatus(taxCodeValue);
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
// for Pay Period Frequency
if(i==1) {
//payPeriodValue = myPrefs.getString("payperiod", "12 09 2011");
payPeriodValue = PAYEEmployeeDetail.payPeriodFinalValue;
if((payPeriodValue==null)) {
payPeriodValue = "--/--/----";
}
o[i].setOrderStatus(payPeriodValue);
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
// for Pay frequency
if(i==2) {
//payFrequencyValue = myPrefs.getString("payfrequency", "Weekly");
payFrequencyValue = PAYEEmployeeDetail.payFrequencyFinalValue;
if((payFrequencyValue==null)) {
payFrequencyValue = "Please select";
}
o[i].setOrderStatus(payFrequencyValue);
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
// for salary / wage
if(i==3) {
salaryWageValue = PAYEEmployeeDetail.salaryWageFinalValue;
if((salaryWageValue==null)||(salaryWageValue.equals(""))) {
salaryWageValue = "$0";
}
else{
salaryWageValue = "$"+salaryWageValue;
}
o[i].setOrderStatus(salaryWageValue);
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
// For Gross / Net
if(i==4) {
o[i].setOrderStatus("Gross");
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
// for KS Employee Deduction
if(i==5) {
employeeDeductionValue = PAYEEmployeeDetail.employeeDeductionFinalValue;
if((employeeDeductionValue==null)||(employeeDeductionValue.equals(""))) {
employeeDeductionValue = "0%";
}
o[i].setOrderStatus(employeeDeductionValue);
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
// for KS Employee Contribution
if(i==6) {
employeeContributionValue = PAYEEmployeeDetail.employeeContributionFinalValue;
if((employeeContributionValue==null)||(employeeContributionValue.equals(""))) {
employeeContributionValue = "0%";
}
else{
employeeContributionValue = employeeContributionValue+"%";
}
o[i].setOrderStatus(employeeContributionValue);
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
// for Child Support Deduction
if(i==7) {
childSupportDeductionValue = PAYEEmployeeDetail.childSupportDeductionFinalValue;
if((childSupportDeductionValue==null)||(childSupportDeductionValue.equals(""))) {
childSupportDeductionValue = "$0";
}
else{
childSupportDeductionValue = "$"+childSupportDeductionValue;
}
o[i].setOrderStatus(childSupportDeductionValue);
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
// for Payroll giving donation
if(i==8) {
payrollDonationValue = PAYEEmployeeDetail.payrollDonationFinalValue;
if((payrollDonationValue==null)||(payrollDonationValue.equals(""))) {
payrollDonationValue = "$0";
}
else{
payrollDonationValue = "$"+payrollDonationValue;
}
o[i].setOrderStatus(payrollDonationValue);
//System.out.println("The Value is: "+o[i].getOrderStatus());
}
m_orders.add(o[i]);
//lv.invalidate();
// System.out.println("==> TaXCode Value: "+PAYEEmployeeDetail.taxCodeFinalValue);
// System.out.println("==> PAyPeriod Value: "+PAYEEmployeeDetail.payPeriodFinalValue);
// System.out.println("==> PayFrequency Value: "+PAYEEmployeeDetail.payFrequencyFinalValue);
// System.out.println("==> Salary/Wage Value: "+PAYEEmployeeDetail.salaryWageFinalValue);
// System.out.println("==> Gross/Net Value "+"STATIC VALUE = GROSS");
// System.out.println("==> Employee Deduction Value "+PAYEEmployeeDetail.employeeDeductionFinalValue);
// System.out.println("==> Employee Contribution Value "+PAYEEmployeeDetail.employeeContributionFinalValue);
// System.out.println("==> Child Support Deduction Value "+PAYEEmployeeDetail.childSupportDeductionFinalValue);
// System.out.println("==> PayRoll Donation Value "+PAYEEmployeeDetail.payrollDonationFinalValue);
//
}
// }
// else
// {
// System.out.println("You Are in Employer");
// m_orders = new ArrayList<Order>();
//
// payListForEmployer = new String[] {"Tax Code","Pay period Begin","Pay Frequency","Salary/Wage per pay",
// "Net or Gross Amount","KiwiSaver Member","Employee Deduction","Employee Contributions",
// "Complying Fund Member","Fund Contribution","ESCT Tax Rate","Child Support Deduction","Payroll giving donation"};
//
// System.out.println("The Length is: "+payListForEmployer.length);
//
// Order o[]=new Order[payListForEmployer.length];
// for (int i = 0; i < payListForEmployer.length; i++)
// {
// o[i]=new Order();
// o[i].setOrderName(payListForEmployer[i]);
// o[i].setOrderStatus("Pending");
// m_orders.add(o[i]);
// }
// }
Thread.sleep(100);
Log.i("ARRAY", ""+ m_orders.size());
} catch (Exception e) {
e.printStackTrace();
}
runOnUiThread(returnRes);
}
private Runnable returnRes = new Runnable() {
@Override
public void run() {
if(m_orders != null && m_orders.size() > 0){
m_adapter.notifyDataSetChanged();
for(int i=0;i<m_orders.size();i++)
m_adapter.add(m_orders.get(i));
}
// m_ProgressDialog.dismiss();
m_adapter.notifyDataSetChanged();
}
};
And Creating and calling the thread like this:
viewOrders = new Runnable(){
@Override
public void run() {
getOrders();
}
};
thread = new Thread(null, viewOrders, "MagentoBackground");
thread.start();
So Will please help me to give logic for that or give some code that can help me in this to implement that functionality.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据你的问题
这是我的几个步骤的答案,假设您在 var 'A' 中传递列表值:
1。您应该在
自定义适配器<中扩展
BaseAdapter
列表的 /code>。2.将初始值设置为
A
并将其传递给适配器
并将其设置为列表视图
。3. 现在,如果您想添加更多值,则
将其添加到您的 var A
中并调用
notifyDataSetChanged() 会将您的新值反映到列表中。
4. 如果您想显示下一个值,则还要在 A 中设置适当的值并调用
notifyDataSetChanged()
。5. 如果您想删除,则将
setOnItemClickListener()
添加到列表中,然后单击从A
中删除值并调用notifyDataSetChanged ()
。注意:要保存列表值,您可以使用 SQLite。您可以通过 lisview 来学习本教程。
On the basis of your question
Here is my answer in few steps and assuming that you are passing your list values in var 'A':
1. You should extend
BaseAdapter
in yourcustom adapter
of the list.2. Set your initial values to
A
and pass it to theadapter
andset it to the listview
.3. Now if you want to add some more values then
add it in your var A
andcall the
notifyDataSetChanged()
which will reflect your new values to the list.4. If you want to show next values then also set the appropriate values in A and call
notifyDataSetChanged()
.5. If you want to delete then
setOnItemClickListener()
to your list and on click remove the values from theA
and callnotifyDataSetChanged()
.Note: To save the list values you can use SQLite. You can follow this tutorial over lisview.