2014-10-16 5 views
-2

나는이 안드로이드 프로젝트를하는 데 문제가있었습니다. 이 문제로 나를 도울 수 있습니까, 버튼 onItemClick의 텍스트를 변경하고 싶습니다. 클릭 된 항목의 지수가 0 (IOW 경우에만안드로이드리스트보기 itemclick 텍스트 변경 버튼

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

     LayoutInflater mInflater = (LayoutInflater) context 
      .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 

     if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.list_item, null); 
     holder = new ViewHolder(); 

     holder.member_name = (TextView) convertView 
       .findViewById(R.id.member_name); 
     holder.product_icons = (ImageView) convertView 
       .findViewById(R.id.product_icons); 
     holder.status = (TextView) convertView.findViewById(R.id.status); 
     holder.addtocart = (Button) convertView 
       .findViewById(R.id.btnaddtocart); 

     convertView.setTag(holder); 

     RowItem row_pos = rowItems.get(position); 

     holder.product_icons.setImageResource(row_pos.getProfile_pic_id()); 
     holder.member_name.setText(row_pos.getMember_name()); 
     holder.status.setText("P" + row_pos.getStatus()); 
     holder.addtocart.setText(" add to cart"); 


     } else { 

      holder = (ViewHolder) convertView.getTag(); 

     } 

     return convertView; 
다음

있습니다 MainActivity.java 내 코드가 switch 문 텍스트를 설정

 public void onItemClick(AdapterView<?> parent, View view, int position, 
     long id) { 

    RowItem item = rowItems.get(position); 
    String member_name = item.getMember_name(); 
     int product_icons = item.getProfile_pic_id(); 
     String status = item.getStatus(); 

    Button cart= (Button) view.findViewById(R.id.btnaddtocart); 
    cart.setText("Added to cart"); 


    } 
+0

을 확인 메모장을 썼다? 텍스트를 변경하려면 초기화 후 텍스트를 직접 설정하십시오 & 왜 전환합니까? – Elltz

답변

0

나를 당신의 문제를 죽일 수 있습니다 ..

1 : 얻을 당신이 목록보기 항목을

ANS를 클릭 할 때 버튼을 변경하려면 다음 버튼을 클릭 이벤트에 응답 .. 당신이 목록보기에 넣어 경우 걸리는 있도록 이

android:descendantFocusability="beforeDescendants" 
를 추가 그래서 또한

ListView focusable android:focusable="true" 
Button not focusable android:focusable="false" 

을 극복하고 .. 목록보기에서 이벤트를 클릭 목록보기에 515,

.. 지금 당신이 클릭 이벤트로 이동 .. 목록보기는 자식 전에 포커스를받을 수 있습니다 이것이다 나는 또한 청결과 몇 가지 코드를 제거

public void onItemClick(AdapterView<?> parent, View view, int position, 
    long id) { 

    RowItem item = rowItems.get(position); 
    String member_name = item.getMember_name(); 
    int product_icons = item.getProfile_pic_id(); 
    String status = item.getStatus(); 

    Button cart= (Button) view.findViewById(R.id.btnaddtocart); 
    cart.setText("Added to cart"); 
    Toast.makeText(this.getApplicationContext(),"Added to Cart: " + member_name, Toast.LENGTH_SHORT).show(); 

} 

코드의 편집 된 버전 그것을 시도,이 어댑터를 설정하기 때문에 나는 다시 한번이 코드

newadapter = new CustomAdapter(this, rowItems); 
mylistview.setAdapter(newadapter); 
newadapter.notifyDataSetChanged(); 

를 제거하고 당신은 을 설정하고 버튼을 볼 수 없어요 그리고 그것은 also..lol를 새로 고칩니다 .. 그래서 이것은 내 피치입니다 목록에 항목을 추가하는 경우에도 작동하는지 알려주세요. 보기 또는 항목을 제거하고 당신이 할 필요가없는 사용자 에게 보여주고 싶은

EIDT 2 .. 어댑터가 단지 notifyDataSetChanged() 메서드를 호출하여 다시 설정 : 당신은 항목

listview.setOnItemClickListener(new OnItemClickListener() { 

        @Override 
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
         // TODO Auto-generated method stub 
         if(cart.getText().equals("Added to cart")){ //checking the text of button 
          arg1.setFocusable(false); 
          arg1.setFocusableInTouchMode(false); 
          arg1.setAlpha((float)0.2);// i dont trust this line-(it works) but i want to give you the idea, there are soo many ways of making a view transparent. 
         } 

        } 
을 사용하지 않도록 설정하는 방법에 대한

클릭하면 클릭 이벤트가 포커스에 응답하지 않고 투명하게 설정되지만 버튼 만 클릭 이벤트에 응답하지 않게하려면 setEnabled를 false로 설정하고 "cart"버튼에 false로 초점을 맞 춥니 다. 그래서 처음에 동생 아 당신이 코드를 발생하는 코드의 정확성이나 codding의 어리 석음에 대한

행복 코드

+0

대단히 감사합니다! –

+0

질문을 추가하고 싶습니다. 내 버튼의 텍스트를 변경하고 항목 클릭 위치를 비활성화 한 후에 달성하고 싶습니다. 고마워요. –

+0

listview 또는 buttom ?? @ paulbuscano에 대한 항목 클릭을 해제하거나 클릭 이벤트에 응답하는 특정 항목을 비활성화 하시겠습니까? – Elltz

0

listerner onitemclick 포함

내 CustomerAdapter입니다 목록/그리드보기의 첫 번째 항목). 다른 항목을 클릭해도 텍스트보기에는 아무런 변화가 없습니다. 뭔가를 클릭하자마자 텍스트를 설정하려면 switch 문을 cart.setText ("Hello")로 바꿉니다.

+0

나는 무엇을 할 것이냐? 내가 달성하고자하는 것은 내가 listview에서 특정 항목을 클릭 할 때 그것을 클릭 한 후 내 버튼의 텍스트를 변경하고 싶습니다. –