確かにそれはあなたが良い感じが、なぜあなたはそれらのすべてのための1人の意図を使いたいん行う場合、あなたが簡単にあなたのテントクラスレベルの変数作ることができます。インテントとは、「意図」やそれ以外のアクションです。私はIntentFactoryを作成して、必要なパラメータを渡し、呼び出し元が使用するためのインテントを返すことを好みます。これにより、すべてのインテント管理とアクティビティの変更が1つの中央の場所に集中することができます。ここに例があります。
/**
*
* Created by App Studio 35 on 6/27/17.
*/
public class IntentFactory {
/**
*
* @param context
* @return intent
*/
public static Intent getLoginIntent(Context context, boolean launchedFromNotification, String idOfDetailToOpen){
Intent intent = new Intent(context, LoginActivity.class);
intent.putExtra(Globals.INTENT_KEYS.KEY_FROM_BADGE_ACCESS, launchedFromNotification);
intent.putExtra(Globals.INTENT_KEYS.KEY_ID_OF_DETAIL_TO_OPEN, idOfDetailToOpen);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
return intent;
}
/**
*
* @param context
* @return
*/
public static Intent getSettingsIntent(Context context){
Intent intent = new Intent(context, SettingsActivity.class);
return intent;
}
/**
*
* @param filePath
* @param subject
* @param body
* @return
*/
public static Intent getSendImageIntent(String filePath, String subject, String body){
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/jpg");
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + filePath));
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, body);
return Intent.createChooser(intent, "Share File");
}
/**
*
* @param toEmailAddresses
* @param subject
* @param body
* @param uris
* @return
*/
public static Intent getEmailIntent(String[] toEmailAddresses, String subject, String body, ArrayList<Uri> uris) {
Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_EMAIL, toEmailAddresses);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, body);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
if(uris != null) {
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
}
return Intent.createChooser(intent, "Send mail...");
}
/**
* Used to launch to app details screen for toggling of permissions or other things
* @param context
* @return
*/
public static Intent getShowAppDetailSettingsIntent(Context context){
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse("package:" + context.getPackageName()));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
return intent;
}
}
もちろん、あなたの個人的な意図に合わせてカスタマイズします。しかし、それは重いオブジェクトではないので、私はインテントを再利用する方法を見つける上で、読みやすさとメンテナンス可能なコードを好むでしょう。そのようにしたい場合は、単にクラスレベルに移動することはできますが、望ましい場合はクラスレベルの変数Intentを参照するだけです。
申し訳ありません、私はただ読んだので、押されたボタンを使用して渡す文字列を表しています。あなたのリストが静的である場合、単にタグの中に値を入れることで、android:tag要素でこれを行うことができます。
ただし、リストが動的な場合は、バインドビューにクリックが含まれている必要があります。アダプタのコンストラクタはclickのコールバックのためのインタフェースをとる必要があり、インデックスに関連付けられたクリックされたモデルを渡すことができます。もちろん、そのときはmodel.getTelephoneNumberを使用してメソッドに渡します。それは理にかなっていますか?
あなたの静的リストのタグ方式を使用するように要求したとして、あなたが行うことができます:
私は単にタグを使用して、あなたを指摘もちろん
public void CallRedCross(View call) {
Intent callIntent = new Intent(Intent.ACTION_DIAL);
callIntent.setData(Uri.parse("tel:"+call.getTag()));
startActivity(callIntent);
}
、上記のコードは、あなたのコードです。
出典
2017-10-04 04:41:18
Sam
あなたのjson値を渡してください....... – sushildlh
リサイクラービューを試してみてください:https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html –