2016-05-21 23:33:24 Zheng_Jiao 阅读数 13616
  • Android Studio 开发详解

    Android Studio教程,该教材会详细介绍Android Studio如何使用,包括在Windows平台下载安装Android Studio、配置、代码重构、项目调试、jar包管理等。

    11061 人正在学习 去看看 郭宏志


这里实现的是搜索框时时查询,代码中是在数据库中使用的模糊查询;

整个布局使用的是线性布局,搜索框又是一个线性布局(里面包含一个相对布局和一个TextView,相对布局里面有一个EditText和ImageVIew),下面是一个ListView;

搜索框其实就是一个EditText,背景是用shape自己画出来的;上面放一个“删除”的图片;


在Activity中给EditText设置一个监听,当输入文字的时候获取输入的内容然后查询数据库,将查询到的数据展示到ListView中;


线来看下布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="43dp"
        android:background="@color/colorPrimaryDark"
        android:gravity="center"
        android:orientation="horizontal">

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1">

            <EditText
                android:id="@+id/edittext"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginBottom="8dp"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="8dp"
                android:background="@drawable/searchbox_bj"
                android:hint="请输入搜索内容"
                android:maxLength="10"
                android:paddingLeft="15dp"
                android:singleLine="true"
                android:textSize="12sp" />

            <ImageView
                android:id="@+id/imageview"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerInParent="true"
                android:paddingRight="20dp"
                android:src="@drawable/delete"
                android:visibility="gone" />

        </RelativeLayout>

        <TextView
            android:id="@+id/textview"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:text="搜索"
            android:textColor="#ffffff"
            android:textSize="20sp" />
    </LinearLayout>

    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"></ListView>
</LinearLayout>

CharSequence s, int start, int before, int count(CharSequence s, int start, int before, int count)方法中做判断,s是EditText中的文本内容;

判断如果s长度为0隐藏“删除”图片,否则显示“删除图片”,显示ListView,查询数据库获得Cursor获得CursorAdapter将内容展示到ListView中;

public class MainActivity extends Activity {

    private EditText mEditText;
    private ImageView mImageView;
    private ListView mListView;
    private TextView mTextView;
    Context context;
    Cursor cursor;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        context = this;
        
        initView();
    }

    private void initView() {
        mTextView = (TextView) findViewById(R.id.textview);
        mEditText = (EditText) findViewById(R.id.edittext);
        mImageView = (ImageView) findViewById(R.id.imageview);
        mListView = (ListView) findViewById(R.id.listview);

        //设置删除图片的点击事件
        mImageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //把EditText内容设置为空
                mEditText.setText("");
                //把ListView隐藏
                mListView.setVisibility(View.GONE);
            }
        });

        //EditText添加监听
        mEditText.addTextChangedListener(new TextWatcher() {
            
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}//文本改变之前执行

            @Override
            //文本改变的时候执行
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                //如果长度为0
                if (s.length() == 0) {
                    //隐藏“删除”图片
                    mImageView.setVisibility(View.GONE);
                } else {//长度不为0
                    //显示“删除图片”
                    mImageView.setVisibility(View.VISIBLE);
                    //显示ListView
                    showListView();
                }
            }

            public void afterTextChanged(Editable s) { }//文本改变之后执行
        });

        mTextView.setOnClickListener(new View.OnClickListener() {
            
            public void onClick(View v) {
                //如果输入框内容为空,提示请输入搜索内容
                if(TextUtils.isEmpty(mEditText.getText().toString().trim())){
                    ToastUtils.showToast(context,"请输入您要搜索的内容");
                }else {
                    //判断cursor是否为空
                    if (cursor != null) {
                        int columnCount = cursor.getCount();
                        if (columnCount == 0) {
                            ToastUtils.showToast(context, "对不起,没有你要搜索的内容");
                        }
                    }
                }

            }
        });
    }

    private void showListView() {
        mListView.setVisibility(View.VISIBLE);
        //获得输入的内容
        String str = mEditText.getText().toString().trim();
        //获取数据库对象
        MyOpenHelper myOpenHelper = new MyOpenHelper(getApplicationContext());
        SQLiteDatabase db = myOpenHelper.getReadableDatabase();
        //得到cursor
        cursor = db.rawQuery("select * from lol where name like '%" + str + "%'", null);
        MyListViewCursorAdapter adapter = new MyListViewCursorAdapter(context, cursor);

        mListView.setAdapter(adapter);

        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //把cursor移动到指定行
                cursor.moveToPosition(position);
                String name = cursor.getString(cursor.getColumnIndex("name"));
                ToastUtils.showToast(context, name);
            }
        });
    }
}

源码下载地址





2017-11-02 09:34:30 qq_34908107 阅读数 3273
  • Android Studio 开发详解

    Android Studio教程,该教材会详细介绍Android Studio如何使用,包括在Windows平台下载安装Android Studio、配置、代码重构、项目调试、jar包管理等。

    11061 人正在学习 去看看 郭宏志

阅读源代码的方式有很多,这里只讲其中的两种方式。

一.AndroidXRef(强烈推荐)
这种方式速度快,操作简单,效率高。
打开网址:http://androidxref.com/
这是一个快速搜索源代码的引擎。界面如下:

上面有Android各个版本,非常详细。
使用方式:
从搜索框上搜索

使用Source Tree

下面举个例子来详细了解一下这两种方式,比如要查找framework中的Context类。
1.从搜索框上搜索
这种方法用于你不知道你要查的类在什么路径中。
在File Path上输入你要查找的类名,后缀带不带都可以,然后再In Project栏中选择frameworks。


如果要直接查Context类中的某个关键字,在Full Search上直接写上该方法的名字,我拿Context类的 checkPermission举例。

2.使用Source Tree
此方法最重要的你要知道所查类的具体路径。
点下面按钮


然后直接查此路径


二.source insight查询

1.下载framework源代码到本地
google已经把framework源码托管在了gitHub
下载地址:
https://github.com/android/platform_frameworks_base
2.下载source insight
直接去source insight官网下载或者百度搜索source insight会有下载链接
3.导入
点击Project-New Project-导入下载好的frameworks源码-Add Tree
具体操作我就不详细说了,大家应该都会。
source insight常用快捷键
Ctrl + 鼠标单击 进入定义.

Alt + F12可以切换,让字符宽度变得一致,或者是大小不同地显示。

Shift + F8 标亮文本中光标所在的单词。

Ctrl + G (或者F5) 跳转到某一行。

Ctrl + O 搜索文件,找到回车打开,找不到ESC退出

Alt + G (或者F7) 打开Symbol Window.

Alt +, 后退;Alt+.前进.

Ctrl + F 查找关键字。

阅读源码就讲到这,还是建议大家用第一种方式。
欢迎大家关注我的微信公众号:「安卓干货铺」

2016-02-27 22:12:10 zhangli_ 阅读数 1542
  • Android Studio 开发详解

    Android Studio教程,该教材会详细介绍Android Studio如何使用,包括在Windows平台下载安装Android Studio、配置、代码重构、项目调试、jar包管理等。

    11061 人正在学习 去看看 郭宏志

转自:http://it.warmtel.com/?p=1328

Android为程序的搜索功能提供了统一的搜索接口,search dialog和search widget,这里介绍search dialog使用。
search dialog 只能为于activity窗口的上方。下面以点击EditText输入框启动search dialog搜索框为例:
效果如下

search1

实现步骤:

1. 新建searchable.xml配置文件,放在res/xml目录下。
searchable.xml用于配置搜索框相关属性,配置文件内容为:

 <?xml version="1.0" encoding="utf-8"?>
   <searchable xmlns:android="http://schemas.android.com/apk/res/android"
       android:label="@string/app_name"
       android:hint="@string/search_hint"/>

注:android:lable是唯一必须定义的属性。它指向一个字符串,是应用程序的名字。
实际上该label也只有在search suggestions for Quick Search Box可用时才可见。
android:hint属性不是必须,但是还是推荐总是定义它。它是search box用户输入前输入框中的提示语。

其它属性可以查看google官方文档:

<?xml version="1.0" encoding="utf-8"?>
    <searchable xmlns:android="http://schemas.android.com/apk/res/android"
        android:label="string resource"
        android:hint="string resource"
        android:searchMode=["queryRewriteFromData" | "queryRewriteFromText"]
        android:searchButtonText="string resource"
        android:inputType="inputType"
        android:imeOptions="imeOptions"
        android:searchSuggestAuthority="string"
        android:searchSuggestPath="string"
        android:searchSuggestSelection="string"
        android:searchSuggestIntentAction="string"
        android:searchSuggestIntentData="string"
        android:searchSuggestThreshold="int"
        android:includeInGlobalSearch=["true" | "false"]
        android:searchSettingsDescription="string resource"
        android:queryAfterZeroResults=["true" | "false"]
        android:voiceSearchMode=["showVoiceSearchButton" | "launchWebSearch" | "launchRecognizer"]
        android:voiceLanguageModel=["free-form" | "web_search"]
        android:voicePromptText="string resource"
        android:voiceLanguage="string"
        android:voiceMaxResults="int"
        >
        <actionkey
            android:keycode="KEYCODE"
            android:queryActionMsg="string"
            android:suggestActionMsg="string"
            android:suggestActionMsgColumn="string" >
    </searchable>

2. 在AndroidManifest.xml文件中声明Searchable Activity。
Searchable Activity为搜索结果显示Activity,可以定义为搜索框所在的当前Activity,也可以单独定义一个Activity
这里直接定义当前搜索框所在SearchActivity.配置如下:
<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
       <meta-data
            android:name="android.app.default_searchable"
            android:value=".SearchActivity"/>

        <activity android:name=".SearchActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
            </intent-filter>

            <meta-data
                android:name="android.app.searchable"
                android:resource="@xml/searchable" />
        </activity>

    </application>

注:activity标签内的标签必须包括android:name这个属性,而且其值必须为”android.app.searchable”,
还必须包括android:resource这个属性,它指定了我们的search dialog的配置文件。(res/xml/searchable.xml).

3.启动搜索框search dailog:
在activity中调用onSearchRequested()方法

 @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.search_edit:
                onSearchRequested();
                break;
        }
    }


4. 获取搜索关键字
搜索框中输入的搜索关键字通过下面代码可以取到:
String query = intent.getStringExtra(SearchManager.QUERY);
但在获取前应该先判断Intent中action是否为搜索action:”android.intent.action.SEARCH”
Intent intent = getIntent();
        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
            String query = intent.getStringExtra(SearchManager.QUERY);
          
        }
  

5.搜索结果处理方式
在前面已经提过,搜索结果可以在单独一个类里处理,也可以在当前搜索框所在类处理,如果在当前搜索框所在类处理,需设置当前类为SingTop模式,防止再次创建Activity. 但这样又会引发一个问题,搜索时onCreate方法不会在执行,而在可以执行的onResult方法中得到的Intent不包含搜索Action:”android.intent.action.SEARCH”,而是原来的Action。
这说明搜索执行后Intent已经被改变,Activity中通过getIntent()取到的Intent还是原来的Intent。那么被改变的Intent从那里获取呢?
重写 onNewIntent(Intent intent) 获取,执行 setIntent(intent) 更新Activity中Intent,
 @Override
    protected void onNewIntent(Intent intent) {
        setIntent(intent);
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (getIntent().ACTION_SEARCH.equals(getIntent().getAction())) {
            String query = intent.getStringExtra(SearchManager.QUERY);
        }
   }

综上在当前搜索框所在类获取搜索关键字处理搜索结果可以这样写:
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search_dialog_layout);
        mSearchEdit = (EditText) findViewById(R.id.search_edit);
        mContentTxt = (TextView)findViewById(R.id.search_content_txt);
        mSearchEdit.setOnClickListener(this);
        handleIntent(getIntent());
    }

    /**
     * 重复刷新当前Activity时执行
     * @param intent
     */
    @Override
    protected void onNewIntent(Intent intent) {
        setIntent(intent);
        handleIntent(intent);
    }

    private void handleIntent(Intent intent) {
        if (getIntent().ACTION_SEARCH.equals(getIntent().getAction())) {
            String query = intent.getStringExtra(SearchManager.QUERY);
            doMySearch(query);
        }
    }
    /**
     *   处理搜索结果
     */
    public void doMySearch(String query){
        mContentTxt.setText(query);
    }


2014-04-08 17:36:47 xxdddail 阅读数 3327
  • Android Studio 开发详解

    Android Studio教程,该教材会详细介绍Android Studio如何使用,包括在Windows平台下载安装Android Studio、配置、代码重构、项目调试、jar包管理等。

    11061 人正在学习 去看看 郭宏志

在Android开发中,搜索框是很常用的,但是控件中没有现成的,需要自己封装。那要怎么封装呢?

方式一:使用XML和JAVA代码相结合的方式。在XML中定义搜索的相关控件及布局,JAVA代码中进行相应事件的控制。

方式二:对于浮动搜索框,可以使用SearchRecentSuggestionsProvider和searchable来实现。

方式三:全部使用JAVA代码实现。

前面两种,网上的代码已经很多,这里使用方式三来实现。先来看看效果图。

   

功能:

(1)、搜索框中有提示。

(2)、输入内容后,提示自动清除,显示输入的内容,并在右边显示清空的图标。

(3)、点击搜索按钮后,将搜索结果输出。

依据这些功能,我们可以作如下分解。

(1)、输入框、清空图标、搜索按钮在同一水平线上,所以可以需要使用LinearLayout的水平布局来实现。

(2)、输入框可以使用EditText实现。

(3)、输入框的提示内容使用EditText的hint实现。

(4)、清空图标可以在EditText中绘制一个靠右的图标,并设定一定的感应区,以响应清空操作。

(5)、搜索按钮使用Button添加图片实现,同时添加点击事件的响应。

(6)、为了确保按钮外的空间被输入框占满,需要使用比重layout_weight=1来设置。

通过分解,大致可以理出需要用到的控件和相应的逻辑,下面是实现的代码。

SearchWidget.java

package com.example.searchframetest;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.text.Editable;
import android.text.InputType;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;

public class SearchWidget extends LinearLayout {

	public final static int SEARCH_ID = 0x7ff20001;
	public final static String HINT_NAME = "hint";

	private EditText _data_editText = null;
	private Button _search_button = null;
	private Context _context = null;
	private Drawable _clear_drawable = null;
	private Drawable _search_drawable = null;
	private Resources _res = null;
	private AttributeSet _attrs = null;
	private String _hint = "";

	public SearchWidget(Context context, AttributeSet attrs) {
		super(context, attrs);
		if (context == null) {
			return;
		}
		_context = context;
		_attrs = attrs;
		Init();
	}

	private void Init() {
		InitParams();
		InitAttrs();
		InitControls();
		InitLayout();
		BindingEvents();
	}

	private void InitLayout() {
		this.setOrientation(LinearLayout.HORIZONTAL);
	}

	private void InitParams() {
		_res = _context.getResources();
		_clear_drawable = _res.getDrawable(R.drawable.clear);
		_search_drawable = _res.getDrawable(R.drawable.search);

	}

	private void InitAttrs() {
		for (int i = 0; i < _attrs.getAttributeCount(); i++) {
			if (_attrs.getAttributeName(i).equals(HINT_NAME)) {
				_hint = _attrs.getAttributeValue(i);
				break;
			}
		}
	}

	private void InitControls() {
		_data_editText = new EditText(_context);
		_search_button = new Button(_context);

		LayoutParams dataLayoutParams = new LayoutParams(0,
				LayoutParams.FILL_PARENT, 1);
		_data_editText.setLayoutParams(dataLayoutParams);

		_search_button.setCompoundDrawablesWithIntrinsicBounds(null, null,
				_search_drawable, null);

		_search_button.setId(SEARCH_ID);

		this.addView(_data_editText);
		this.addView(_search_button);
		// addHint();
		_data_editText.setHint(_hint);
		// _data_editText.setFocusable(false);
	}

	private void BindingEvents() {

		_data_editText.addTextChangedListener(_search_TextChanged);
		_data_editText.setOnTouchListener(_search_OnTouch);
	}

	public void setSearchOnClickListener(OnClickListener onclickListener) {

		_search_button.setOnClickListener(onclickListener);
	}

	public String getSearchData() {

		return _data_editText.getText().toString();
	}

	private TextWatcher _search_TextChanged = new TextWatcher() {

		@Override
		public void afterTextChanged(Editable s) {

			Editable data = s;

			if (TextUtils.isEmpty(data)) {
				_data_editText.setCompoundDrawablesWithIntrinsicBounds(null,
						null, null, null);
				return;
			}

			_data_editText.setCompoundDrawablesWithIntrinsicBounds(null, null,
					_clear_drawable, null);

		}

		@Override
		public void beforeTextChanged(CharSequence s, int start, int count,
				int after) {

		}

		@Override
		public void onTextChanged(CharSequence s, int start, int before,
				int count) {
			// Log.e("TEST","3");
		}
	};

	private OnTouchListener _search_OnTouch = new OnTouchListener() {

		@Override
		public boolean onTouch(View v, MotionEvent event) {

			switch (event.getAction()) {

			case MotionEvent.ACTION_UP: {

				int curX = (int) event.getX();
				String data = _data_editText.getText().toString();
				if (TextUtils.isEmpty(data)) {
					return false;
				}
				boolean isClearPosition = (curX > v.getWidth() - 88);

				if (isClearPosition) {
					Clear(event);
					return true;
				}

			}
			default: {
				break;
			}

			}

			return false;

		}

		private void Clear(MotionEvent event) {
			int cacheInputType = _data_editText.getInputType();// backup
			// the
			// input
			// type

			_data_editText.setInputType(InputType.TYPE_NULL);// disable
			// soft
			// input

			_data_editText.onTouchEvent(event);// call native handler

			_data_editText.setInputType(cacheInputType);// restore input
			// type
			// addHint();
			_data_editText.setText("");
		}

	};

}
注:

(1)、给_search_button定义一个id,以便响应点击事件。此处的SearchWidget.SEARCH_ID在实际中可能会与xml中定义的ID值有冲突,可以根据实际的情况作相应的调整。

(2)、定义HINT_NAME,以便在xml中调用搜索框控件时使用hint属性。

(3)、InitAttrs方法中,过虑出hint属性。

(4)、_data_editText.setHint(_hint)中设置输入框的内容提示。

(5)、BindingEvents添加_data_editText的文件改变和触摸事件的监听。

(6)、增加getSearchData函数供外部调用。

(7)、增加setSearchOnClickListener供外部设置搜索按钮的监听事件。

(8)、setCompoundDrawablesWithIntrinsicBounds动态修改输入框右侧的图标。

(9)、在_data_editText的layoutParams的布局参数设置中,将其宽度设置为0,高度设置为充满父容器,比重设置为1,以确保充满搜索按钮外的空间。

调用代码:

package com.example.searchframetest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class MainActivity extends Activity {

	private SearchWidget _search_widget = null;
	private TextView _result_text=null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Init();
	}
	
	private void Init() {
		FetchUIControls();
		BindingEvents();	
	}
	
	private void FetchUIControls() {
		_search_widget = (SearchWidget) findViewById(R.id.searchWidget);
		_result_text = (TextView) findViewById(R.id.result);
	}
	
	private void BindingEvents() {

		_search_widget.setSearchOnClickListener(_clickListener);

	}

	private OnClickListener _clickListener = new OnClickListener() {

		@Override
		public void onClick(View v) {
			switch (v.getId()) {
			case SearchWidget.SEARCH_ID: {
				Search();
				break;
			}
			default: {
				break;
			}
			}

		}
	};

	protected void Search() {
		String data=_search_widget.getSearchData();
		_result_text.setText(data);
	}

}
注:

(1)、使用常用的获取控件的方式来获取SearchWidget。

(2)、为搜索按钮设置监听事件时,使用SearchWidget.SEARCH_ID来区别点击事件的响应ID。

转载请注明出处http://blog.csdn.net/xxdddail/article/details/23194573

2017-10-26 10:08:56 qq_39493777 阅读数 1443
  • Android Studio 开发详解

    Android Studio教程,该教材会详细介绍Android Studio如何使用,包括在Windows平台下载安装Android Studio、配置、代码重构、项目调试、jar包管理等。

    11061 人正在学习 去看看 郭宏志

展示效果

这里写图片描述

代码区

SouActivity

public class SouActivity extends AppCompatActivity implements TextWatcher{
    @BindView(R.id.app_sou)
    EditText appSou;
    @BindView(R.id.app_sou_list)
    ListView appSouList;
    @BindView(R.id.activity_sou)
    RelativeLayout activitySou;
    private String mUrl = "http://120.27.23.105/product/searchProducts";
    private List<MySouFr.DataBean> sdata;
    private MyBase myBase;
    private String asou;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sou);
        ButterKnife.bind(this);
        sdata=new ArrayList<MySouFr.DataBean>();
        appSou.addTextChangedListener(this);
        appSou.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View view, boolean b) {
                if(b)
                {
                    appSou.setText("");
                }
            }
        });


    }

    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        //获取输入框的值
        asou = appSou.getText().toString().trim();

            OkHttp3Utils.getInstance().doGet(mUrl + "?keywords=" + asou + "&page=1", new GsonObjectCallback<MySouFr>() {

                @Override
                public void onUi(final MySouFr mySouFr) {
                    /*适配器*/
                    if (asou !=null&&!asou.equals("")) {
                        sdata = mySouFr.getData();
                        myBase = new MyBase();
                        appSouList.setAdapter(myBase);
                        appSouList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                            @Override
                            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                                Intent intent = new Intent(SouActivity.this, Sou_item_Activity.class);
                                intent.putExtra("url",mySouFr.getData().get(i).getDetailUrl());
                                startActivity(intent);
//                                Toast.makeText(SouActivity.this, "假装你已经点击了哦!", Toast.LENGTH_SHORT).show();
                            }
                        });
                    } else if(myBase!=null) {
                        sdata.clear();
                        myBase.notifyDataSetChanged();
                    }
                }

                @Override
                public void onFailed(Call call, IOException e) {

                }
            });
        }


    @Override
    public void afterTextChanged(Editable editable) {

    }

    class MyBase extends BaseAdapter{

        @Override
        public int getCount() {
            return sdata.size();
        }

        @Override
        public Object getItem(int i) {
            return sdata.get(i);
        }

        @Override
        public long getItemId(int i) {
            return i;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            Vh vh=null;
            if(view==null){
                view=View.inflate(SouActivity.this,R.layout.item_sou,null);
                vh=new Vh();
                vh.tv1=(TextView) view.findViewById(R.id.item_sou_text1);
                view.setTag(vh);
            }else{
                vh = (Vh) view.getTag();
            }
            Log.d("main",sdata.get(i).getTitle());
            vh.tv1.setText(sdata.get(i).getTitle());
            return view;
        }
    }
    class Vh{
        TextView tv1;
    }
}

activity_sou

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_sou"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="sizu.nsg.SouActivity">
    <EditText
        android:id="@+id/app_sou"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Searching..."
        />
    <ListView
        android:id="@+id/app_sou_list"
        android:layout_below="@id/app_sou"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </ListView>

</RelativeLayout>

item_sou

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/item_sou_text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="123"
        />
</RelativeLayout>

android 搜索框

阅读数 6374

没有更多推荐了,返回首页