2014-04-16 113 views
0

越来越空值这是我的一个名为Dataadapter_PaidTicket.java我需要隐藏在列表视图按钮,同时用JSON

public class Dataadapter_PaidTicket extends BaseAdapter { 

    public static String ticket_id; 
    private final Context context; 
    public JSONArray values; 
    public TextView textview; 
    public TextView textview1; 
    public TextView textview2; 
    public TextView textview3; 
    public TextView textview4; 
    public Button btn; 

    public Dataadapter_PaidTicket(Context context, int _resource, JSONArray values) { 
     // TODO Auto-generated constructor stub 
     this.context = context; 
     this.values = values; 
    } 

    @Override 
    public int getCount() { 
     return values.length(); 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     try { 
      return values.get(position); 
     } catch (JSONException e) { 
      return e; 
     } 
    } 

    @Override 
    public long getItemId(int arg0) { 
     // TODO Auto-generated method stub 
     return 1; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     LayoutInflater inflater = (LayoutInflater) 
     context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     ViewHolder holder = new ViewHolder(); 
     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.list_row_ticket, null); 
      holder.textview = (TextView) convertView.findViewById(R.id.ticket_name); 
      holder.textview1 = (TextView) convertView.findViewById(R.id.ticket_start_date); 
      holder.textview2 = (TextView) convertView.findViewById(R.id.ticket_end_date); 
      holder.textview3=(TextView)convertView.findViewById(R.id.ticket_price); 
      holder.textview4=(TextView)convertView.findViewById(R.id.ticket_qty); 
      holder.btn=(Button)convertView.findViewById(R.id.btn_edit_buy); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     }  
     JSONObject temp = null; 
     try { 
      temp = (JSONObject) values.get(position); 
      String title=temp.get("paid_ticket_name").toString(); 
      //String Ctitle = title.substring(0, 10); 
      holder.textview.setText(title.replace("null", " ")); 
      String tkt_s_date = temp.get("paid_start_sale").toString(); 
      String s_dat e= Constants.formatteddate(tkt_s_date); 
      holder.textview1.setText(s_date.replace("null", " ")); 
      String tkt_e_date = temp.get("paid_end_sale").toString(); 
      String e_date = Constants.formatteddate(tkt_e_date); 
      holder.textview2.setText(e_date.replace("null", " ")); 
      String q = temp.get("paid_qty").toString(); 
      holder.textview3.setText(q.replace("0", " ")); 
      String p = temp.get("paid_price").toString(); 
      holder.textview4.setText(p.replace("null", " ")); 
      if (Constants.id.equals(Dataadapter.user_id)) { 
       holder.btn.setText("EDIT"); 
      } else { 
       holder.btn.setText("BUY"); 
      } 
      Log.e("Title",temp.get("paid_ticket_name").toString()); 
      Log.e("Venue",temp.get("paid_description").toString()); 
      Log.e("Date",temp.get("paid_start_sale").toString()); 
      ticket_id = temp.get("id").toString(); 
      Log.e("Ticket ID",ticket_id); 
      convertView.setId(position); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return convertView; 
    } 

    private class ViewHolder { 
     public TextView textview; 
     public TextView textview1; 
     public TextView textview2; 
     public TextView textview3; 
     public TextView textview4; 
     public Button btn; 
    } 
} 

这里的java文件,我需要做这样的事情。如果title,s_date,e_date,paid_qty,paid_price的值为空,那么我不想显示按钮(这里是btn)。是否可以隐藏该按钮?我怎样才能做到这一点?

+0

您可以用'holder.btn.setVisibility(View.INVISBLE);'隐藏当然有可能你的按钮 –

+0

。你可以玩简单的条件来实现它。 –

+0

holder.btn.setVisibility(View.INVISBLE); or holder.btn.setVisibility(View.GONE); – kumar

回答

1

请在替换(“null”,“”)函数中将“”替换为“”(无空格),因为如果JSON没有值,它不是空格,它只是空值。然后再试一次。

if (title==null || s_date==null || e_date==null || paid_qty==null || paid_price == null){ 
     holder.btn.setVisibility(View.INVISIBLE); 
    } 

    else{ 
     holder.btn.setVisibility(View.VISIBLE); 
    } 
+0

我已经尝试过这样,仍然可以看到按钮。如果title,s_date,e_date,paid_qty为null,那么我不需要在列表中显示这些值,并且还想让按钮(这里是btn)不可见。 – user3388240

+0

请解释你的答案! –

+0

@ user3388240你可以请我检查并更换,就像我在我更新的答案中解释的那样。如果它仍然不起作用,请记录您的标题,s_date值和长度,我可以解决它。 –

0
Button btn; 
btn= (Button) findViewById(R.id.button1); 
if (title.equals(" ") || s_date.equals(" ") || e_date.equals(" ") || paid_qty.equals(" ") || paid_price.equals(" ")) 
{ 
    btn.setVisibility(View.GONE); 
} 
else 
{ 
btn.setVisibility(View.VISIBLE); 
}