2014-07-22 7 views
-1

** listview에서 간단한 클릭만으로 onclicklistener를 사용하여 새 활동을 시작하는 데 도움이 필요합니다. JSON을 사용하여 데이터를 구문 분석합니다. 아래 코드는 내 코드
**입니다.onclicklistener를 사용하여 click listview에서 새로운 활동 시작

public class MainActivity extends Activity { 

     private CategoryAdapter adapter; 
     private CategoriesBean cb; 

    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      ListView lv = (ListView) findViewById(R.id.list); 

      cb = callCategory(); 

      List<Category> catList = new ArrayList<Category>(); 

      adapter = new CategoryAdapter(this, cb.getCategoryBn()); 
      lv.setAdapter(adapter); 

     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 

      MenuInflater mif = getMenuInflater(); 
      mif.inflate(R.menu.actionbar_menu, menu); 
      return super.onCreateOptionsMenu(menu); 
     } 

     public boolean onOptionsItemSelected(MenuItem item) { 
      switch (item.getItemId()) { 

      case R.id.share: 
       return true; 

      case R.id.settings: 
       Intent in = new Intent(MainActivity.this, AppSettings.class); 
       startActivity(in); 

      case R.id.feedback: 
       return true; 

      case R.id.about: 
       return true; 

      default: 
       return super.onOptionsItemSelected(item); 
      } 

     } 

     private CategoriesBean callCategory() { 
      CategoriesBean cb = new CategoriesBean(); 

      NetworkClass netClass = NetworkClass.getInstance(MainActivity.this); 
      cb = netClass.callCategory(); 

      return cb; 
     } 

     private void showData() { 
      DbAdapter1 helper = DbAdapter1.getInstance(MainActivity.this); 
      Cursor cur = helper.fetchQuery("select * from jokes"); 
     } 

     public class CategoryAdapter extends BaseAdapter { 

      Context context; 
      List<Category> catList = new ArrayList<Category>(); 

      TextView categoryName; 
      TextView categoryCount; 

      public CategoryAdapter(Context context, List<Category> items) { 
       this.context = context; 
       this.catList = items; 
      } 

      public int getCount() { 
       return catList.size(); 
      } 

      public Object getItem(int position) { 
       return catList.get(position); 
      } 

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

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

       if(convertView==null) 
       { 
        LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        convertView=vi.inflate(R.layout.inflate_categoryrow,null); 
       } 

       categoryName = (TextView)convertView.findViewById(R.id.categoryname); 
       categoryName.setText(catList.get(position).getCatName()); 
       categoryCount=(TextView)convertView.findViewById(R.id.categorycount); 
       categoryCount.setText(catList.get(position).getCatCount()); 






       convertView.setOnClickListener(new OnClickListener() { 

뭔가 새로운 활동을 목록의 위치를 ​​얻을 시작하려면이 온 클릭 방법 내에 있어야

    @Override 
        public void onClick(View v) { 



         Intent i=new Intent(MainActivity.this,CategoryDetail.class); 


         startActivity(i); 

        } 
       }); 

       return convertView; 
      } 
     } 
    } 
+0

위치 변수를 직접 사용하여 위치를 올바르게 얻을 수 있습니까? – Droidekas

답변

0

다른 활동에 position를 보내려면 방법 :

int position = getIntent().getExtras().getInt("Position"); 
0

이처럼, 당신의 목록보기에 대한 onItemClickListener을 설정할 수 있습니다

Intent i=new Intent(MainActivity.this,CategoryDetail.class); 
Bundle bundle = new Bundle(); 
bundle.putInt("Position", position); //position is one of the method arguments 
i.putExtras(bundle); 
startActivity(i); 

onCreate에이 라인을 설정 다른 활동에서이 정보를 검색하려면 :

listview.setOnItemClickListener(new onItemClickListener(){ 
    @Override 
    protected void onListItemClick(ListView parent, View v, int position, long id){ 
     //Do stuff 
    } 
}); 
0

당신의 위치 변수는 당신이 당신의 onclick 블록에서 사용할 수 있습니다 최종 버젼 :

@Override 
public void onClick(View v) { 
    //In case you need the object at the position 
    Object objectAtPosition = getItem(position); 

    Bundle bundle = new Bundle(); 
    bundle.putInt("YOUR_POSITION_EXTRA", position); 
    Intent i=new Intent(MainActivity.this,CategoryDetail.class); 
    i.putExtras(bundle); 

    startActivity(i); 

} 

아무런 문제가 보이지 않습니다. 이것이 해결책이 아니라면 문제를 구체적으로 파악할 수 있습니까?

관련 문제