Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中自定义列表视图上单个列表的预览/详细信息_Android - Fatal编程技术网

android中自定义列表视图上单个列表的预览/详细信息

android中自定义列表视图上单个列表的预览/详细信息,android,Android,我是Android新手,正在使用自定义列表视图,它工作得非常好,但问题是当我单击单个列表以显示列表的详细信息时,每次它只显示最后一个列表的详细信息。在onItemClick方法中,每。。。这是代码 try { //*** Getting Array of Attributes attributes = jsonreturn.getJSONObject(TAG_ATTRIBUTE); String status = attribute

我是Android新手,正在使用自定义列表视图,它工作得非常好,但问题是当我单击单个列表以显示列表的详细信息时,每次它只显示最后一个列表的详细信息。在onItemClick方法中,每。。。这是代码

 try {

      //*** Getting Array of Attributes
            attributes = jsonreturn.getJSONObject(TAG_ATTRIBUTE);
            String status = attributes.getString(TAG_VALIDCODE);
            JSONObject invoices = jsonreturn.getJSONObject(TAG_INVOICELIST);
            JSONArray invoice = invoices.getJSONArray(TAG_INVOICE);

            if(status.equals("200")){
     // looping through All Invoice
       for(int i = 0; i < invoice.length(); i++)
         {


            JSONObject c = invoice.getJSONObject(i);

     //***** Storing each JSON item in variable
            JSONObject client = c.getJSONObject(TAG_CLIENT);
            String organization = client.getString(TAG_ORGANIZATION);
            String invoiceno = c.getString(TAG_ID);
            String date = c.getString(TAG_DATE);
            String currency = c.getString(TAG_CURRENCY);
            String outstanding = c.getString(TAG_OUTSTANDING);
            String invoice_status = c.getString(TAG_STATUS);
            invoice_id = c.getString(TAG_INVOICE_ID);



    //**** creating new HashMap

            HashMap<String, String> map = new HashMap<String, String>();

   //*** adding each child node to HashMap key => value
            map.put(TAG_ORGANIZATION, organization);
            map.put(TAG_ID, invoiceno);
            map.put(TAG_DATE, date);
            map.put(TAG_CURRENCY, currency);
            map.put(TAG_OUTSTANDING, outstanding);
            map.put(TAG_STATUS, invoice_status);
            map.put(TAG_INVOICE_ID, invoice_id);

  //**** adding HashList to ArrayList

            invoiceList.add(map);

            }
       }

       else{
            Toast.makeText(this, "Invalid Details", 1000).show();       }


    }
           catch (JSONException e)
           {
           e.printStackTrace();
           }

     /**
     Updating parsed JSON data into ListView
     * */

    InvoiceListAdapter invoiceadapter = new InvoiceListAdapter(this, invoiceList);

    mListView.setAdapter(invoiceadapter);

 //****** Launching new screen on Selecting Single ListItem

 mListView.setOnItemClickListener(new OnItemClickListener() {


        public void onItemClick(AdapterView<?> parent, View view, int position, long id)
        {
            // getting values from selected ListItem

            //--String date = ((TextView) view.findViewById(R.id.date)).getText().toString();
            //--String status = ((TextView) view.findViewById(R.id.invoicestatus)).getText().toString();

            // Starting new intent
            Intent in = new Intent(getApplicationContext(), PreviewInvoice.class);
            in.putExtra("myinvoiceid", invoice_id);
            in.putExtra("uniquetoken", tokenid);
           //-- in.putExtra(TAG_DATE, date);
            //---in.putExtra(TAG_STATUS, status);
            startActivity(in);
        }
    }); 
试试看{
//***获取属性数组
attributes=jsonreturn.getJSONObject(TAG_属性);
字符串状态=attributes.getString(TAG_VALIDCODE);
JSONObject invoices=jsonreturn.getJSONObject(标记为发票列表);
JSONArray invoice=invoices.getJSONArray(TAG_invoice);
如果(状态等于(“200”)){
//循环浏览所有发票
对于(int i=0;ivalue
地图放置(标记组织,组织);
地图放置(标签ID、发票编号);
地图放置(标记日期、日期);
地图放置(标记货币、货币);
地图放置(标记突出,突出);
映射放置(标签状态、发票状态);
映射放置(标签、发票ID、发票ID);
//****将哈希列表添加到ArrayList
发票列表。添加(地图);
}
}
否则{
Toast.makeText(这是“无效的详细信息”,1000).show();}
}
捕获(JSONException e)
{
e、 printStackTrace();
}
/**
将解析的JSON数据更新到ListView中
* */
InvoiceListAdapter invoiceadapter=新的InvoiceListAdapter(此,invoiceList);
mListView.setAdapter(invoiceadapter);
//******在选择单个列表项时启动新屏幕
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id)
{
//从选定的ListItem获取值
//--字符串日期=((TextView)view.findViewById(R.id.date)).getText().toString();
//--字符串状态=((TextView)view.findViewById(R.id.invoicestatus)).getText().toString();
//开始新的意图
Intent in=新的Intent(getApplicationContext(),PreviewWinVoice.class);
in.putExtra(“myinvoiceid”,发票id);
in.putExtra(“uniquetoken”,tokenid);
//--in.putExtra(标签日期、日期);
//---in.putExtra(标签状态、状态);
星触觉(in);
}
}); 
我的发票列表适配器类代码

public class InvoiceListAdapter extends BaseAdapter {

//--private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;

public InvoiceListAdapter(ManageInvoice manageInvoice, ArrayList<HashMap<String, String>> invoiceList) {
   //-- activity = manageInvoice;
    data=invoiceList;

    inflater = (LayoutInflater)manageInvoice.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}

public int getCount() {
    if(null==data){
        return 0;
    }
    return data.size();
}

public Object getItem(int position) {
    if(null==data || data.size()<=position){
        return null;
    }
    return data.get(position);
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent)
{

    View vi=convertView;
    if(convertView==null)

    vi = inflater.inflate(R.layout.invoice_list, null );

    TextView title = (TextView)vi.findViewById(R.id.organization);
    TextView invoiceId = (TextView)vi.findViewById(R.id.invoice_id);
    TextView date = (TextView)vi.findViewById(R.id.date);
    TextView currency = (TextView)vi.findViewById(R.id.currency);
    TextView currencyvalue = (TextView)vi.findViewById(R.id.outstanding);
    TextView status = (TextView)vi.findViewById(R.id.invoice_status);
   // ImageView thumb_image=(ImageView)vi.findViewById(R.id.invoice_status);

    HashMap<String, String> Invoice = new HashMap<String, String>();
    Invoice = data.get(position);

    // Setting all values in listview
    title.setText(Invoice.get(ManageInvoice.TAG_ORGANIZATION));
    invoiceId.setText(Invoice.get(ManageInvoice.TAG_ID));
    date.setText(Invoice.get(ManageInvoice.TAG_DATE));
    currency.setText(Invoice.get(ManageInvoice.TAG_CURRENCY));
    currencyvalue.setText(Invoice.get(ManageInvoice.TAG_OUTSTANDING));
    status.setText(Invoice.get(ManageInvoice.TAG_STATUS));


    return vi;
}

public JSONArray get(int position) {
    // TODO Auto-generated method stub
    return null;
}
公共类InvoiceListAdapter扩展了BaseAdapter{
//--私人活动;
私有数组列表数据;
专用静态充气机=空;
公共发票列表适配器(ManageInvoice ManageInvoice,ArrayList invoiceList){
//--活动=管理发票;
数据=发票列表;
充气器=(LayoutInflater)manageInvoice.getSystemService(Context.LAYOUT\u充气器\u服务);
}
public int getCount(){
if(null==数据){
返回0;
}
返回data.size();
}
公共对象getItem(int位置){

如果(null==data | | data.size()这是因为您的JSON对象已经迭代到invoice.length(),并且您要传递到Intent中的invoice|id和tokenid是最后一条记录的内容或值。请将JSON对象移动到所需的位置,然后从那里检索变量的值。

public void-onitemclick(AdapterView父级、视图、整型位置、长id)
 public void onItemClick(AdapterView<?> parent, View view, int position, long id)
        {
              // Starting new intent
            Intent in = new Intent(getApplicationContext(), PreviewInvoice.class);
            in.putExtra("myinvoiceid",invoiceList.get(position).get(TAG_INVOICE_ID));
            in.putExtra("uniquetoken", tokenid); // Actually I can't find your tokenId in HashMAp object
            startActivity(in);
        }
    }); 
{ //开始新的意图 Intent in=新的Intent(getApplicationContext(),PreviewWinVoice.class); in.putExtra(“myinvoiceid”,invoiceList.get(position.get(TAG_INVOICE_ID)); in.putExtra(“uniquetoken”,tokenid);//实际上我在HashMAp对象中找不到您的tokenid 星触觉(in); } });
因为您在
onItemClick()
中引用的是发票id的静态值,所以只需从适配器定位
HashMap
对象,并使用它键获取发票id的值


invoiceadapter.get(position)
它为您在
ListView
中单击的位置提供了一个对象。使用key
TAG\u INVOICE\u ID
可以从HashMap对象中获取它的值。

其中我移动了我的JSON对象。。请建议我应用此代码,但在我的InvoiceListAdapter类中出现一些错误:(当我在代码invoiceadapter.get(position).get(TAG_INVOICE_ID))中使用这一行时,它会要求make invoiceadapter final我这样做了,然后get方法对于InvoiceListAdapter是未定义的。当在InvoiceListAdapter中定义它时,它会显示类型JSONArray中的方法get(int)不适用于参数(字符串),现在我得到消息“method get”类型对象“on.get(TAG_INVOICE_ID))(String)未定义;您也可以使用此行..invoiceList.get(position).get(TAG_INVOICE_ID);尝试此..并查看我编辑的答案。如果此答案解决了您的问题,您可以将其作为正确答案接受。这也将帮助您和其他用户。。