2013-04-04 80 views

回答

1

下面的這段代碼適合我。

基本上,您可以將setOnLongClickListener添加到getView方法中的textview。

該代碼取自here。我只是添加了textView.setOnLongClickListener。 當你點擊列表項時,吐司會出現。 當您長按列表中的文本視圖時,日誌會顯示。

public class ListMobileActivity extends ListActivity { 
static final String[] MOBILE_OS = new String[] { "Android", "iOS", 
     "WindowsMobile", "Blackberry"}; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setListAdapter(new MobileArrayAdapter(this, MOBILE_OS)); 
} 

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    String selectedValue = (String) getListAdapter().getItem(position); 
    Toast.makeText(this, selectedValue, Toast.LENGTH_SHORT).show(); 
} 
} 

這裏的自定義適配器:

public class MobileArrayAdapter extends ArrayAdapter<String> { 
private final Context context; 
private final String[] values; 

public MobileArrayAdapter(Context context, String[] values) { 
    super(context, R.layout.list_mobile, values); 
    this.context = context; 
    this.values = values; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View rowView = inflater.inflate(R.layout.list_mobile, parent, false); 
    TextView textView = (TextView) rowView.findViewById(R.id.label); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.logo); 
    textView.setText(values[position]); 
    textView.setOnLongClickListener(new OnLongClickListener() { 

     @Override 
     public boolean onLongClick(View v) { 
      Log.i("MobileArrayAdapter", (String) ((TextView)v).getText()); 
      return false; 
     } 

    }); 
    // Change icon based on name 
    String s = values[position]; 

    System.out.println(s); 

    if (s.equals("WindowsMobile")) { 
     imageView.setImageResource(R.drawable.windowsmobile_logo); 
    } else if (s.equals("iOS")) { 
     imageView.setImageResource(R.drawable.ios_logo); 
    } else if (s.equals("Blackberry")) { 
     imageView.setImageResource(R.drawable.blackberry_logo); 
    } else { 
     imageView.setImageResource(R.drawable.android_logo); 
    } 

    return rowView; 
} 
} 

希望這有助於。

+0

我需要在textview中添加android:focusable =「true」嗎? – 2013-04-04 20:37:43

+0

我認爲沒關係。我沒有它。 – pt2121 2013-04-04 20:39:18

+0

我有Github上的整個項目。請參閱https://github.com/entryleveldev/LongClick – pt2121 2013-04-04 20:45:35

相關問題