试图在onclick函数中实现listview

时间:2011-11-23 19:24:56

标签: android listview android-listview

public class CompanySearchActivity extends RathbonesActivity {
private CompanySearchAdapter mStockListAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.companysearch_layout);
    final EditText keywordET = (EditText)findViewById(R.id.codeET);
    final Button search = (Button)findViewById(R.id.button_stock_add);
    final Activity a= CompanySearchActivity.this;
    search.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            String keyword = keywordET.getText().toString();
            Log.i("keyword: ",keyword);
            ArrayList codearr = getResults(keyword);
            mStockListAdapter = new CompanySearchAdapter(a,codearr);

            ListView listview = (ListView) findViewById(R.id.stocklist);
            listview.setAdapter(mStockListAdapter);
            listview.setOnItemClickListener(this);
            listview.setOnItemLongClickListener(this);
        }
    });


}

由于此关键字,行listview.setOnItemClickListener(this); listview.setOnItemLongClickListener(this);会出错,我也将其替换为'a',但它不起作用。可能的方法是什么?

3 个答案:

答案 0 :(得分:2)

如果您希望使用父活动onClick方法,您的活动必须实现OnItemClickListener和OnItemLongClickListener

public class CompanySearchActivity extends RathbonesActivity implements OnItemClickListener, OnItemLongClickListener 
{
     @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
        {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
        {
            // TODO Auto-generated method stub

        }

}

请注意代码&#34; implements OnItemClickListener, OnItemLongClickListener&#34; 这对于以这种方式实施它至关重要。

然后你可以打电话:

listview.setOnItemClickListener(CompanySearchActivity.this);
listview.setOnItemLongClickListener(CompanySearchActivity.this);

答案 1 :(得分:0)

this关键字是对拥有当前正在执行的方法的对象的引用。在这种情况下,this引用您正在定义的匿名View.OnClickListener对象。尝试将this替换为CompanySearchActivity.this

答案 2 :(得分:0)

您的listview onClick定义应该类似于您的搜索侦听器。

    search.setOnClickListener(new View.OnClickListener() {






       search.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            String keyword = keywordET.getText().toString();
            Log.i("keyword: ",keyword);
            ArrayList codearr = getResults(keyword);
            mStockListAdapter = new CompanySearchAdapter(a,codearr);
        }
    });

   ListView listview = (ListView) findViewById(R.id.stocklist);
   listview.setAdapter(mStockListAdapter);

   listview.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
<do somthing when its clicked>
        }
    });

还确保您有多个布局,这些查看项目(列表视图和搜索)  在companysearch_layout.xml中

相关问题