2016-03-28 71 views
0

我有自定義Lisview包含textview和imagebutton ...我想播放特定的音頻文件,每行中的一個按鈕。音頻文件在原始文件夾,我怎麼能做這個?自定義列表視圖包含圖像按鈕,點擊按鈕時播放聲音

MainActivity.java 
public class MainActivity extends Activity { 
ListViewAdapter adapter; 
ArrayList<DictionaryApp> arrayList = new ArrayList(); 
String[] cuyuno; 
String[] edefinition; 
EditText editsearch; 
String[] english; 
ListView list; 
int[] sound; 
String[] tagalog; 
String[] tbaybay; 
String[] tdefinition; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    this.tagalog = new String[]{"alaala", "araw", "baliw", "basura", "kahirapan", "kaibigan", "kakatuwa", "kasunduan", "daluyang-luha", "dambuhala", "dulo", "dukutin", "gawin", "guni-guni", "hagdan", "hintay", "idlip", "idolo", "maganda", "masama", "masarap", "matalino", "nagtanan", "nawala", "pagbibitiw", "paikliin"}; 
    this.tbaybay = getResources().getStringArray(R.array.tbaybay); 
    this.tdefinition = getResources().getStringArray(R.array.tdefinition); 
    this.cuyuno = getResources().getStringArray(R.array.cuyuno); 
    this.english = getResources().getStringArray(R.array.eword); 
    this.edefinition = getResources().getStringArray(R.array.edefinition); 
    this.sound = new int[]{R.raw.alaala, R.raw.araw, R.raw.baliw, R.raw.basura, R.raw.kaibigan, R.raw.kakatuwa, R.raw.kasunduan}; 
    this.list = (ListView) findViewById(R.id.listview); 
    for (int i = 0; i < this.tagalog.length; i++) { 
     this.arrayList.add(new DictionaryApp(this.tagalog[i], this.tbaybay[i], this.tdefinition[i], this.cuyuno[i], this.english[i], this.edefinition[i])); 
    } 
    this.adapter = new ListViewAdapter(this, this.arrayList); 
    this.list.setAdapter(this.adapter); 
    this.editsearch = (EditText) findViewById(R.id.search); 
    this.editsearch.addTextChangedListener(new TextWatcher() { 
     public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 
     } 

     public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 
     } 

     public void afterTextChanged(Editable arg0) { 
      MainActivity.this.adapter.filter(MainActivity.this.editsearch.getText().toString().toLowerCase(Locale.getDefault())); 
     } 
    }); 
} 
} 



ListViewAdapter.java 
public class ListViewAdapter extends BaseAdapter { 
private ArrayList<DictionaryApp> arraylist; 
private List<DictionaryApp> dictionaryapplist = null; 
LayoutInflater inflater; 
Context mContext; 

public class ViewHolder { 
    TextView cuyuno; 
    TextView edefinition; 
    TextView english; 
    ImageButton sound; 
    TextView tagalog; 
    TextView tbaybay; 
    TextView tdefinition; 
} 

public ListViewAdapter(Context context, List<DictionaryApp> dictionaryapplist) { 
    this.mContext = context; 
    this.dictionaryapplist = dictionaryapplist; 
    this.inflater = LayoutInflater.from(this.mContext); 
    this.arraylist = new ArrayList(); 
    this.arraylist.addAll(dictionaryapplist); 
} 

public int getCount() { 
    return this.dictionaryapplist.size(); 
} 

public DictionaryApp getItem(int position) { 
    return (DictionaryApp) this.dictionaryapplist.get(position); 
} 

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

public View getView(final int position, View view, ViewGroup parent) { 
    ViewHolder holder; 
    if (view == null) { 
     holder = new ViewHolder(); 
     view = this.inflater.inflate(R.layout.listview_item, null); 
     holder.tagalog = (TextView) view.findViewById(R.id.tagalog); 
     holder.tbaybay = (TextView) view.findViewById(R.id.tbaybay); 
     holder.tdefinition = (TextView) view.findViewById(R.id.tdefinition); 
     holder.cuyuno = (TextView) view.findViewById(R.id.cuyuno); 
     holder.english = (TextView) view.findViewById(R.id.english); 
     holder.edefinition = (TextView) view.findViewById(R.id.edefinition); 
     holder.sound = (ImageButton) view.findViewById(R.id.sound); 
     view.setTag(holder); 
    } else { 
     holder = (ViewHolder) view.getTag(); 
    } 
    holder.tagalog.setText(((DictionaryApp) this.dictionaryapplist.get(position)).getTagalog()); 
    holder.tbaybay.setText(((DictionaryApp) this.dictionaryapplist.get(position)).getTbaybay()); 
    holder.tdefinition.setText(((DictionaryApp) this.dictionaryapplist.get(position)).getTdefinition()); 
    holder.cuyuno.setText(((DictionaryApp) this.dictionaryapplist.get(position)).getCuyuno()); 
    holder.english.setText(((DictionaryApp) this.dictionaryapplist.get(position)).getEnglish()); 
    holder.edefinition.setText(((DictionaryApp) this.dictionaryapplist.get(position)).getEdefinition()); 

    view.setOnClickListener(new OnClickListener() { 
     public void onClick(View arg0) { 
      Intent intent = new Intent(ListViewAdapter.this.mContext, SingleItemView.class); 
      intent.putExtra("tagalog", ((DictionaryApp) ListViewAdapter.this.dictionaryapplist.get(position)).getTagalog()); 
      intent.putExtra("tbaybay", ((DictionaryApp) ListViewAdapter.this.dictionaryapplist.get(position)).getTbaybay()); 
      intent.putExtra("tdefinition", ((DictionaryApp) ListViewAdapter.this.dictionaryapplist.get(position)).getTdefinition()); 
      intent.putExtra("cuyuno", ((DictionaryApp) ListViewAdapter.this.dictionaryapplist.get(position)).getCuyuno()); 
      intent.putExtra("english", ((DictionaryApp) ListViewAdapter.this.dictionaryapplist.get(position)).getEnglish()); 
      intent.putExtra("edefinition", ((DictionaryApp) ListViewAdapter.this.dictionaryapplist.get(position)).getEdefinition()); 
      ListViewAdapter.this.mContext.startActivity(intent); 
     } 
    }); 
    return view; 
} 

public void filter(String charText) { 
    charText = charText.toLowerCase(Locale.getDefault()); 
    this.dictionaryapplist.clear(); 
    if (charText.length() == 0) { 
     this.dictionaryapplist.addAll(this.arraylist); 
    } else { 
     Iterator i$ = this.arraylist.iterator(); 
     while (i$.hasNext()) { 
      DictionaryApp da = (DictionaryApp) i$.next(); 
      if (da.getTagalog().toLowerCase(Locale.getDefault()).contains(charText)) { 
       this.dictionaryapplist.add(da); 
      } 
     } 
    } 
    notifyDataSetChanged(); 
} 
} 


DictionaryApp.java 
public class DictionaryApp { 
private String cuyuno; 
private String edefinition; 
private String english; 
private String tagalog; 
private String tbaybay; 
private String tdefinition; 

public DictionaryApp(String tagalog, String tbaybay, String tdefinition, String cuyuno, String english, String edefinition) { 
    this.tagalog = tagalog; 
    this.tbaybay = tbaybay; 
    this.tdefinition = tdefinition; 
    this.cuyuno = cuyuno; 
    this.english = english; 
    this.edefinition = edefinition; 
} 

public String getTagalog() { 
    return this.tagalog; 
} 

public String getTbaybay() { 
    return this.tbaybay; 
} 

public String getTdefinition() { 
    return this.tdefinition; 
} 

public String getCuyuno() { 
    return this.cuyuno; 
} 

public String getEnglish() { 
    return this.english; 
} 

public String getEdefinition() { 
    return this.edefinition; 
} 

} 

音頻文件是原始文件夾,我想出來那是什麼聲音將在ListView內的ImageButton玩....我在Android的新手,幫助是我最欣賞...感謝

+1

什麼是錯誤/問題你找到上述代碼?發佈你的直接問題,而不是整個主要問題。 – MKJParekh

+0

我想你應該在這裏閱讀答案[如何使用音樂原始文件夾在這音樂播放器](http://stackoverflow.com/a/23227939/3832212) –

+0

你建議可能會有幫助,但我不知道應該放在哪裏,應該放在主要活動類還是ListViewAdapter類中? –

回答

0

要播放的媒體文件,你可以做這樣的: https://stackoverflow.com/a/16797922/1750013

爲每個行扮演着不同的聲音,你可以使用開關的情況下,選擇基於行數不同的文件。多態性是另一種選擇。否則,你必須對應用邏輯更加具體,那麼只有某人能夠提出另一種邏輯。希望它有幫助:)