2014-01-28 19 views
0

我有一个复杂的listview,我已经在列表视图项上设置onclick,但我想为listview的每一行做它,它应该打开那里各自的活动(不同的活动)。我该怎么办?我的代码是在这里..如何在列表视图行上设置onclick?

public class Content extends Activity { 

    String [] content = {"Linked List", "Write your own function", "programs", "Trees", "Sorting Techniques", "C Pointer", 
      "C Functions", "C Statements", "C Arrays", "C Variables", "C Structures", "C Macros", "C Headers", "C File Operations", 
      "C Declarations and Definitions", "C Functions-built-in", "C Functions-The Main Function", "OS Concepts", 
      "General Concepts", "Compiling and Linking"}; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.content); 

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

     ContentAdapter ca = new ContentAdapter(); 
     list.setAdapter(ca); 

     list.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       // TODO Auto-generated method stub 


       /*Here I want to do something that after 
       clicking on any listview row it should open there respective page 
       */ 

      } 
     }); 
    } 

    class ContentAdapter extends BaseAdapter { 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return content.length; 
     } 

     @Override 
     public Object getItem(int arg0) { 
      // TODO Auto-generated method stub 
      return null; 
     } 

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

     @Override 
     public View getView(int index, View v, ViewGroup vg) { 
      // TODO Auto-generated method stub 

      v = getLayoutInflater().inflate(R.layout.custom_content, null); 

      TextView content_txt = (TextView)v.findViewById(R.id.custom_content_textView); 

      content_txt.setText(content[index]); 

      return v; 
     } 

    } 

} 
+1

使用'content [arg2]'并使用intent和startActivity。 – Raghunandan

回答

0
lv.setOnItemClickListener(new OnItemClickListener() { 
public void onItemClick(AdapterView<?> parent, View view, 
    int position, long id) { 
    // When clicked, show a toast with the TextView text 
    if(position == 1) { 
     //code specific to first list item  
     Intent myIntent = new Intent(view.getContext(), Html_file1.class); 
     startActivityForResult(myIntent, 0); 
    } 

    if(position == 2) { 
     //code specific to 2nd list item  
     Intent myIntent = new Intent(view.getContext(), Html_file2.class); 
     startActivityForResult(myIntent, 0); 
    } 
} 

});

1
list.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
      long arg3) { 

      switch (arg2){ 
       case 0: 
        startActivity(new Intent(this,Activity2.class)); 
        break; 
       case 1: 
        // do something else 
        break; 
      } 
    }); 
0

有两个选项可用。

  1. 正如其他人建议你可以使用。(推荐一个)

    lv.setOnItemClickListener(Your OnItemClickListener); 
    
  2. 由于每行是您R.layout.custom_content的一部分,所以你可以对XML的最顶部的布局设置的onclick监听器文件。这种最顶级的布局将覆盖所有行中的视图。 (这不被推荐,但在可能的解决方案上)。

    v = getLayoutInflater().inflate(R.layout.custom_content, null); 
    TopMostLayoutType topmostlayout = (TopMostLayoutType)v.finViewById(R.id.topmostLayoutId); 
    topmostlayout.setOnClickListener(yourOnClickListener); 
    
0

使用枚举而不是字符串,它也有利于利用碎片。

public enum Content implements Activity { 
        LINKED("Linked List"),WRITE ("Write your own function"),  
       PROGRAM("programs"),TREE ("Trees"),SORT("Sorting Techniques")}; 


    private String name; 


    Content(String name) { 
    this.name = name; 
} 

    @Override 
public String toString() { 

    return name; 
} 


@Override 
public Activity getActivity() 
    { 
    switch (this) 
    { 

    case LINKED: 

return (new Intent(this,Activity1.class)); 

    case WRITE: 

    return (new Intent(this,Activity2.class)); 



    default: 
     return null; 
    } 
     } 
相关问题