2016-03-01 63 views
0

这里是我的Java:如何制作某个自定义的listview项目,发送给某个活动?

public class Cantos extends AppCompatActivity { 

ListView lv; 
Context context; 

ArrayList cantoList; 
public static String[] cantos = {"1: Abre Tu Oido", "2: A Cristo Quiero", "3: Acerquese Mi Clamor", "4: A Cristo Yo Alabare", 
     "5: Acude Dios", "6: Adelante", "7: A Dios Canto", "8: Adios Para Siempre", "9: Ahora Senor", "10: A Jesucristo Ven", 
     "11: Alabad A Dios"}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_cantos); 
    initTypeface(); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setTitle(null); 
    toolbar.setNavigationIcon(getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha)); 
    toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(Cantos.this, MainMenu.class); 
      startActivity(i); 
     } 
    }); 



} 

private void initTypeface() { 

    Typeface myTypeface = Typeface.createFromAsset(getAssets(), "fonts/AftaSerifThin-Regular.otf"); 
    TextView text = (TextView) findViewById(R.id.toolbarCantos); 
    text.setTypeface(myTypeface); 

} 
} 

这是我其他的Java与BaseAdapter(自定义的ListView):

public class CustomAdapter extends BaseAdapter { 

String[] result; 
Context context; 
private static LayoutInflater inflater = null; 


public CustomAdapter(Cantos cantos, String[] cantos1) { 

    result = cantos1; 
    context = cantos; 
    inflater = (LayoutInflater)context. 
      getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

} 


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

@Override 
public Object getItem(int position) { 
    return position; 
} 

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

public class Holder 
{ 
    TextView tv; 
} 

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

    Holder holder = new Holder(); 
    View rowView; 

    rowView = inflater.inflate(R.layout.cantos_list, null); 
    holder.tv = (TextView) rowView.findViewById(R.id.textCanto); 
    holder.tv.setText(result[position]); 


    Typeface myFont = Typeface.createFromAsset(context.getAssets(), "fonts/AftaSerifThin-Regular.otf"); 
    holder.tv.setTypeface(myFont); 


    return rowView; 
} 


} 

我怎样才能让一个特定的项目送我到另一一定的活动? 提前谢谢! 对不起,如果我垃圾邮件太多!我几乎完成了一些基础知识!我求求你应付我!

+0

需要更多信息。什么项目会导致新的活动?你的listview在哪里声明。适配器在哪里使用? – Samnon

+0

项目“1 Abre Tu Oido”和哎呀!对不起,我删除了意外的代码。这里是'context = this; lv =(ListView)findViewById(R.id.ListView); lv.setAdapter(new CustomAdapter(this,cantos));' – Alex

回答

0

使用intent.putExtra(“钥匙”,值)& getExtra()从一个活动的数据发送到另一个活动

//try this 
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 


      Intent intent; 
      intent = new Intent(CurrentActivity.this, NextActivity.class); 

       startActivity(intent) 

     } 
    }); 
+0

先生/女士感谢您的回复,但我不是在寻找这个。我想知道如何编码,所以当我按下我的列表视图中的随机项时,它会将我发送给其他活动。你会知道如何做到这一点? – Alex

1

如果你想打电话列表视图项目的选择另一个活动您可以在自定义适配器呼叫OnClick监听器textview

代码:

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

Holder holder = new Holder(); 
View rowView; 

rowView = inflater.inflate(R.layout.cantos_list, null); 
holder.tv = (TextView) rowView.findViewById(R.id.textCanto); 
holder.tv.setText(result[position]); 

holder.tv.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        Intent intent = new Intent(context,NewAcivity.class); 
        ((Activity) context).startActivity(intent); 
       } 
      }); 


Typeface myFont = Typeface.createFromAsset(context.getAssets(), "fonts/AftaSerifThin-Regular.otf"); 
holder.tv.setTypeface(myFont); 


return rowView; 
} 
0

第一套适配器stview。然后执行onItem点击事件。

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       displayAnotherListView(position); 
      } 
     }); 


public void displayAnotherListView(int position) { 


     switch (position) { 
      case 0: { 
       Intent i=new Intent(YourActivity.this,Activity_one.class); 
       startActivity(ii); 
       break; 
      } 
      case 1: { 

       Intent one=new Intent(YourActivity.this,Activity_two.class); 
       startActivity(one); 
       break; 
      } 
      case 2: { 
       Intent two = new Intent(YourActivity.this, Activity_three.class); 
       startActivity(two); 
       break; 
      } 
} 
} 

你可以为每个项目做到这一点,但如果你想通过相同的意图所有没有必要作出方法查找位置,只是通过对项目的点击意图。

+0

另外确保为你的listview设置适配器。 – Garry

+0

它不起作用。 – Alex

相关问题