JSON

2014-04-16 1 views
0

에 null 값을 가져 오는 동안 내가 뭔가를 Dataadapter_PaidTicket.javaJSON

다음
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; 
    } 
} 

라는 이름의 내 자바 파일입니다, 나는 이런 식으로 뭔가를해야 할 목록보기에서 버튼을 숨길 필요가있다. title, s_date, e_date, paid_qty, paid_price의 값이 null 인 경우 버튼 (여기 btn)을 표시하고 싶지 않습니다. 그 버튼을 숨길 수 있습니까? 어떻게해야합니까?

+0

당신이 사용할 수있는'holder.btn.setVisibility (View.INVISBLE)'수 물론 당신의 버튼 –

+0

을 숨기는. 그것을 달성하기 위해 간단한 조건으로 게임을 할 수 있습니다. –

+0

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

답변

1

JSON에 값이없는 경우 emptyspace가 아니므로 replace ("null", "") 함수에서 ""(공백없이)를 "null"로 바꾸십시오. 그런 다음 다시 시도하십시오.

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 인 경우 list에 값을 표시 할 필요가 없으며 버튼 (여기서는 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); 
}