2017-02-02 11 views
0

mysqlデータベースから収集したデータがリストビュー(これは着信音アプリ)になりました..選択されたアイテムの再生imageButonでonClickListenerを設定する必要があります。 私はonClickListenerが、私は選択した項目... this is a view of my app選択したアイテムのOnClickListenerを設定しました

のためにそれを設定する方法を知らない、この場合、これは私がこれまでにやっていることです:

public class ListActivity extends AppCompatActivity implements AsyncResponse 
,AdapterView.OnItemClickListener{ 

private boolean paused = true; 

URL url; 
Bitmap bmImg = null; 



public static final int NOTIFICATION_ID = 1; 

final String LOG = "ListActivity"; 

private ArrayList<Product> productList; 
private ListView lvProduct; 
private FunDapter<Product> adapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.d_activity_list_d); 


    ImageLoader.getInstance().init(UILConfig.config(ListActivity.this)); 

    PostResponseAsyncTask taskRead = new PostResponseAsyncTask(ListActivity.this, this); 

    taskRead.execute("http://symphonyrecords.6te.net/product.php"); 
    lvProduct = (ListView)findViewById(R.id.lvProduct); 
    registerForContextMenu(lvProduct); 


}//onCreate 


@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.list_context_menu, menu); 
} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 

    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
    final Product selectedProduct = adapter.getItem(info.position); 
    Log.d(LOG, selectedProduct.name); 

    if(item.getItemId() == R.id.menuUpdate){ 
     Intent in = new Intent(ListActivity.this, DetailActivity.class); 
     in.putExtra("product", selectedProduct); 
     startActivity(in); 
    } 


    return super.onContextItemSelected(item); 
} 

@Override 
public void processFinish(String s) { 
    productList = new JsonConverter<Product>().toArrayList(s, Product.class); 

    BindDictionary<Product> dict = new BindDictionary<Product>(); 
    dict.addStringField(R.id.tvName, new StringExtractor<Product>() { 
     @Override 
     public String getStringValue(Product product, int position) { 
      return product.name; 
     } 
    }); 




    adapter = new FunDapter<>(
      ListActivity.this, productList, R.layout.d_layout_list_d, dict); 


    lvProduct.setAdapter(adapter); 
    lvProduct.setOnItemClickListener(this); 

} 


@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    Product selectedProduct = productList.get(position); 

} 




public void playAndPause(View view1){ 

      ImageButton button = (ImageButton) findViewById(R.id.playPause); 
    int icon; 

    if (paused) { 
     paused = false; 
     icon = R.drawable.ic_pause; 
     Toast.makeText(ListActivity.this, "Playing", Toast.LENGTH_LONG).show(); 
    } 
    else { 
     paused = true; 
     icon = R.drawable.ic_play; 
     Toast.makeText(ListActivity.this, "Stopped", Toast.LENGTH_LONG).show(); 
    } 

    button.setImageDrawable(
     ContextCompat.getDrawable(getApplicationContext(), icon)); 

    } 



} 
+0

アダプタークラスのコードを投稿 –

+0

私は外部ライブラリ(FunDapter)を使用しました。 – Mehran

+0

次にできません。なぜあなたはビューを表示するためだけに他のアダプタを使用する必要がありますか?可能であれば、独自のアダプターを作ってください。または、そのアダプタに参照を与えるコールバックがあるかもしれません –

答えて

0

変更するには、このようなGetViewメソッド

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     // Inflate a new view or use a recycled view. 
     View v = convertView; 
     GenericViewHolder holder; 
     if (null == v) { 
      LayoutInflater vi = 
        (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(mLayoutResource, null); 
      holder = new GenericViewHolder(); 
      holder.root = v; 
      // There must be view name of that play button 
      holder.playButton.setOnClickListener(new View.OnClickListener(){ 
    public void onClick(View v) 
     //do your task over here 
     } 

      // init the sub views and put them in a holder instance 
      FunDapterUtils.initViews(v, holder, mBindDictionary); 

      v.setTag(holder); 
     } else { 
      holder = (GenericViewHolder) v.getTag(); 
     } 
} 
関連する問題