私はJavaとAndroidが初めてです。私はアプリを作っている(主に私のために使用して、いくつかの知識を得るために)、私はリストビュー幅101の項目を持っている。あるアイテムをクリックすると、別のレイアウトで新しいアクティビティが開始されます。 101項目のそれぞれのレイアウトは同じですが、内容は異なります。私の質問です:すべてのアイテムに対して1つの.xmlファイルを作成できますが、クリックされたアイテムに基づいてコンテンツが異なるようにすることはできますか?複数のアクティビティ用に1つのlayout.xml
私は以下のコードを追加します(非常に実験的で、確かにレイアウトを変更します):)ありがとうございました!
MainAvtivity.java
public class MainActivity extends AppCompatActivity {
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.list);
String[] values = new String[]{"§01. Kongle", "§02. Binders",
"§03. Plaster", "§04. Kvitering", "§05. 'Ruter'-logo", "§06. Ølkork", "§07. Hjerteutklipp av russekort",
"§08. Ølkork i gull", "§09. Bussbillett", "§10. Bit av et sitteunderlag", "§11. Signatur fra helsesøster",
"§12. Skolens logo", "§13. Første bokstav", "§14. Bit av skilt", "§15. Bit av burgereske", "§16. Fjær", "§16. Bilde av Barney Stinson",
"§17. Stoffbit", "§18. Champagnekork i gull", "§19. Billettarmbånd", "§20. Amnesty-logo", "§21. Plastskje", "§22. Mobildeksel",
"§24. Legokloss", "§25. Tampong", "§26. Kritt", "§27. Undertøy", //Plus more
};
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_activated_2, android.R.id.text1, values);
listView.setAdapter(adapter);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if (position == 0) {
Intent myIntent = new Intent(view.getContext(), fastnokkel.class);
startActivityForResult(myIntent, 0);
}
if (position == 1) {
Intent myIntent = new Intent(view.getContext(), binders.class); //These classes will differ from witch item is clicked.
startActivityForResult(myIntent, 0);
}
if (position == 2) {
Intent myIntent = new Intent(view.getContext(), plaster.class);
startActivityForResult(myIntent, 0);
}
if (position == 3) {
Intent myIntent = new Intent(view.getContext(), plaster.class);
startActivityForResult(myIntent, 0);
}
if (position == 4) {
Intent myIntent = new Intent(view.getContext(), kongle.class);
startActivityForResult(myIntent, 0);
}
if (position == 5) {
Intent myIntent = new Intent(view.getContext(), binders.class);
startActivityForResult(myIntent, 0);
}
if (position == 6) {
Intent myIntent = new Intent(view.getContext(), kongle.class);
startActivityForResult(myIntent, 0);
}
if (position == 7) {
Intent myIntent = new Intent(view.getContext(), binders.class);
startActivityForResult(myIntent, 0);
}
}
});
}
Avtivity_Main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#fff"
android:orientation="vertical"
tools:context="com.example.sande.listview8.MainActivity"
android:weightSum="1">
<ListView
android:id="@+id/list"
android:layout_height="wrap_content"
android:layout_width="match_parent">
</ListView>
Same_Layout_Different_Content.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView2"
android:layout_width="150dp"
android:layout_height="150dp"
android:contentDescription="@string/bildeBesk"
app:srcCompat="@drawable/kongle"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/imageView2"
android:layout_centerHorizontal="true">
<TextView
android:id="@+id/gjenstand"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:text="@string/kongle"
android:textSize="35sp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:id="@+id/gjoremaal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/gjenstand"
android:layout_marginTop="19dp"
android:textSize="30sp"
android:text="@string/kongleBeskrivelse"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
ありがとう! 私は2つのテキストビューを持つxmlファイルを持っています。 私はこれもxml filleのアクティビティにあります: 'switch(position){ case 0: textView =(TextView)findViewById(R.id.gjenstand); textView.setVisibility(View.VISIBLE); 休憩。 ケース1: textView =(TextView)findViewById(R.id.gjoremaal); textView.setVisibility(View.VISIBLE); } ' は、MainActivityを拡張しています。 MainActivityから値 "Position"を取得するにはどうすればよいですか? PositionはonItemClickListenerのパラメータです。 –
あなたのmainactivityのアイテムで、Intent i = new Intent(MainActivity.this、NextActivity.class)を作成したリスナーをクリックします。 startActivity(i); i.putExtra( "position"、YOUR_LAYOUT_POSITION)を追加するだけです。 startActivity(i)の前に。 –
ありがとうございます!私はそれが働くようになった!私もifループをforループで置き換えましたが、これは101 ifを持つよりも優れていますか、それとも私のアプリケーションが遅くなりますか? –