簡體   English   中英

如何為 ListView SecondActivity 創建 arrayList

[英]how to create arrayList for ListView SecondActivity

我在strings.xml 中創建了一個字符串數組列表,以便它可以在和適配器中使用,但是當 listItemClick 打開一個新活動時,我不希望將存儲在字符串中的數組設置為新的描述性文本. 請幫我。 我想創建另一個數組列表作為完整描述,它應該與綁定到行的列表不同。

讓我進一步描述我的意思。

我的row.xml顯示一個 Image,一個 TextView 作為Title ,另一個 TextView 作為description 現在我已經使用這種安排為我的 Model.java 生成構造函數和 getter

現在,如果我單擊 ListView 項目列表,它會打開一個NewActivity.java ,將存儲在string.xml 中的數據作為 arrayList 提供,它只是標題描述文本。 但我希望與該描述不同的另一個文本在 NewActivity.java 中顯示為全新的描述文本。 這就是我現在正在努力做的事情。

謝謝

這是MainActivity.java代碼

 public class MainActivity extends AppCompatActivity implements SearchView.OnQueryTextListener { private String TAG = "MainActivity ----- ; " ; // Store instance variables private int page; private ConsentForm form; ListView listView; ListViewAdapter adapter; List<String> title, description2,description; int[] icon; int [] soundfile; ArrayList<Model> arrayList = new ArrayList<Model>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar actionBar = getSupportActionBar(); actionBar.setTitle("Redeemed Songs"); //listview soundfile file for songs in position soundfile= new int[] {R.raw.song_1,R.raw.song_2,R.raw.song_3, R.raw.song_4,R.raw.song_5,R.raw.song_6,R.raw.song_7,R.raw.song_8,}; title = Arrays.asList(getResources().getStringArray(R.array.array_titles)); description = Arrays.asList(getResources().getStringArray(R.array.array_lyrics)); description2 = Arrays.asList(getResources().getStringArray(R.array.array_lyrics2)); icon = new int[]{ R.drawable.song, R.drawable.song, R.drawable.song, R.drawable.song,R.drawable.song,R.drawable.song, R.drawable.song,}; listView = findViewById(R.id.list); for (int i = 0; i< title.size(); i++){ Model model =new Model(title.get(i), description.get(i),description2.get(i), icon[i]); //bind all strings in an array arrayList.add(model); } //pass result to listview class adapter = new ListViewAdapter(this, arrayList); //bind the adapter to the listview class listView.setAdapter(adapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu, menu); MenuItem myActionMenuItem = menu.findItem(R.id.action_search); SearchView searchView = (SearchView)myActionMenuItem.getActionView(); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String s) { return false; } @Override public boolean onQueryTextChange(String s) { if (TextUtils.isEmpty(s)){ adapter.filter(""); listView.clearTextFilter(); } else { adapter.filter(s); } return true; } }); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id==R.id.action_settings){ Toast.makeText(this, "Settings Selected", Toast.LENGTH_SHORT).show(); startActivity(new Intent(this, Main2Activity.class)); return true; //do your funtionality here } else if (id==R.id.action_howtouse){ Toast.makeText(this, "How-To", Toast.LENGTH_SHORT).show(); startActivity(new Intent(this, Main3Activity.class)); return true; //do your funtionality here }else if (id==R.id.action_favorites){ Toast.makeText(this, "Favorites Selected", Toast.LENGTH_SHORT).show(); startActivity(new Intent(this, Main3Activity.class)); return true; //do your funtionality here } else if (id==R.id.action_developers){ Toast.makeText(this, "About", Toast.LENGTH_SHORT).show(); startActivity(new Intent(this, Main4Activity.class)); return true; //do your funtionality here } return super.onOptionsItemSelected(item); } @Override public boolean onQueryTextSubmit(String query) { return false; } @Override public boolean onQueryTextChange(String newText) { return false; } }

這是 ListViewAdapter.java

 public class ListViewAdapter extends BaseAdapter{ //Variables Context mContext; LayoutInflater inflater; List<Model> modellist; ArrayList<Model> arrayList; int [] soundfile; //Constructor public ListViewAdapter(Context context, List<Model> modellist) { mContext = context; this.modellist = modellist; inflater = LayoutInflater.from(mContext); this.arrayList = new ArrayList<Model>(); this.arrayList.addAll(modellist); } public class ViewHolder{ TextView mTitleTv, mDescTv; ImageView mIconTv; MediaPlayer mediaPlayer; } @Override public int getCount() { return modellist.size(); } @Override public Object getItem(int i) { return modellist.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(final int i, View view, ViewGroup parent) { final ViewHolder holder; if (view==null){ holder = new ViewHolder(); view = inflater.inflate(R.layout.row, null); //locate the views in row.xml holder.mTitleTv = (TextView) view.findViewById(R.id.mainTitle); holder.mDescTv = (TextView) view.findViewById(R.id.mainDesc); holder.mIconTv = view.findViewById(R.id.mainIcon); view.setTag(holder); } else { holder = (ViewHolder)view.getTag(); } //set the result into textview holder.mTitleTv.setText(modellist.get(i).getTitle()); holder.mDescTv.setText(modellist.get(i).getDesc()); //Set the result in imagview holder.mIconTv.setImageResource(modellist.get(i).getIcon()); //listview soundfile file for songs in position soundfile= new int[] {R.raw.song_1,R.raw.song_2,R.raw.song_3, R.raw.song_4,R.raw.song_5,R.raw.song_6,R.raw.song_7,R.raw.song_8,}; //listview item clicks view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //code later Intent intent = new Intent(mContext, NewActivity.class); intent.putExtra("position", getViewTypeCount()); intent.putExtra("actionBarTitle", modellist.get(i).getTitle()); intent.putExtra("contentTv", modellist.get(i).getDesc()); mContext.startActivity(intent); } }); return view; } //filter public void filter(String charText){ charText = charText.toLowerCase(Locale.getDefault()); modellist.clear(); if (charText.length()==0){ modellist.addAll(arrayList); } else { for (Model model : arrayList){ if (model.getTitle().toLowerCase(Locale.getDefault()).contains(charText)){ modellist.add(model); } } } notifyDataSetChanged(); } }

這是 String.xml

 <resources> <string name="app_name">Redeemed Songs</string> <string-array name="array_lyrics"> <item>This song lyrics 1</item> <item>This song lyrics 2</item> </string-array> <string-array name="array_lyrics2"> <item>This brand new description for song lyrics 1</item> <item>This brand new description for song lyrics 1</item> </string-array> <string-array name="array_titles"> <item>Song 001</item> <item>Song 002</item> </string-array> </resources>

將其作為屬性添加到您的模型中

class Model{

your variable
.
.
.
String brandNewDesc;


public String getBrandNewDesc(){

return brandNewDesc;
}
public void setBrandNewDesc(String description){

brandNewDesc =description;
}

}

並使用

   //listview item clicks
    view.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //code later
            Intent intent = new Intent(mContext, NewActivity.class);
            intent.putExtra("position", getViewTypeCount());
            intent.putExtra("actionBarTitle", modellist.get(i).getTitle());
            intent.putExtra("contentTv", modellist.get(i).getDesc());
            **intent.putExtra("brandNewDesc", modellist.get(i).getBrandNewDesc());**

            mContext.startActivity(intent);


        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM