[解決済み] Android StudioのListFragment
2022-02-18 20:46:03
質問
ListFragmentがどのように機能し、どのように使用するのかを理解するために、オンラインでチュートリアルを見ていました。
チュートリアルが曖昧で、ListFragmentの仕組みがよくわからなかったし、Android StudioでListFragmentを実装することもできなかった。
ListFragmentがどのように機能するのか、またAndroid Studioでどのように実装すればよいのか、どなたか詳細を教えてください。
また、ListFragmentを使用せずに、フラグメント内でListViewを定義するにはどうすればよいでしょうか?
どのように解決するのですか?
最後の質問について。
また、ListFragmentを使用せずに、フラグメント内でListViewを定義するにはどうすればよいでしょうか?
役に立つかもしれないコードを持っています。
以下はMainActivity.javaで、Fragmentを含んでいます。
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new MusicFragment())
.commit();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
Intent i = new Intent(this, SettingsActivity.class);
startActivity(i);
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class MusicFragment extends Fragment {
ListView list;
String[] text = { "House of Whispers","Hot Lunch", "Number of the Beast", "Killers"};
Integer[] imageId = { R.drawable.hotlunch1, R.drawable.hotlunch2,
R.drawable.ironmaiden1, R.drawable.ironmaiden2 };
public MusicFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
list = (ListView) rootView.findViewById(R.id.ListView);
CustomAdapter adapter = new CustomAdapter(getActivity() , text, imageId );
list.setAdapter(adapter);
Log.d("CustomAdapter", "MusicFragment onCreateView successful");
return rootView;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
}
fragment_main.xml です。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity$PlaceholderFragment">
<ListView
android:id="@+id/ListView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</ListView>
</RelativeLayout>
Edit: ご要望にお応えして、CustomAdapterをご紹介します。
public class CustomAdapter extends ArrayAdapter<String> {
private final Activity _context;
private final String[] _text;
private final Integer[] _imageId;
public CustomAdapter(Activity context, String[] text, Integer[] imageId) {
super(context, R.layout.list_item, text);
this._context = context;
this._text = text;
this._imageId = imageId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = _context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.list_item, null, true);
TextView txtTitle = (TextView) rowView.findViewById(R.id.text);
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
txtTitle.setText(_text[position]);
imageView.setImageResource(_imageId[position]);
return rowView;
}
}
関連
-
[解決済み】SDKの場所がandroid studioで見つからない。
-
[解決済み】getCheckedRadioButtonId()が無駄なintを返す?
-
[解決済み] ADBエラー:デーモンに接続できない
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み] Android Studioでパッケージ名を変更する
-
[解決済み] Android Studioの「assets」フォルダはどこに配置すればいいですか?
-
[解決済み] Android StudioのGradleとは?
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】パッケージ名(Google Analytics)に一致するクライアントが見つからない - 複数のproductFlavorsとbuildTypes
-
[解決済み] シンボル 'context' を解決できない
-
[解決済み】Edit Textのandroid:ems属性とは何ですか?[重複しています]
-
[解決済み】com.android.ide.common.process.ProcessException: aaptの実行に失敗しました! どうすればいいですか?
-
[解決済み】アンドロイドクロームブラウザのモバイルウェブアプリケーションのメニューでHTMLユニコード ☰が検出されない。
-
[解決済み] ユーザーが拒否する可能性のあるパーミッションが必要なコール
-
[解決済み】レンダリングの問題 レンダリング中に発生した例外:com/android/util/PropertiesMap [重複].
-
[解決済み】Android Studioでused import文がunused import文に指定されるのはなぜ?
-
[解決済み] エラー - Android リソースのリンクに失敗しました (AAPT2 27.0.3 Daemon #0)
-
[解決済み] Android M パーミッション : shouldShowRequestPermissionRationale()関数の使用方法について混乱しています。