use of com.tencent.wstt.gt.log.SearchLogAdapter in project GT by Tencent.
the class GTLogSearchActivity method openLog.
private void openLog(final String filename) {
final AsyncTask<Void, Void, LogEntry[]> openFileTask = new AsyncTask<Void, Void, LogEntry[]>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
// 转菊花
proDialog = ProgressDialog.show(GTLogSearchActivity.this, "get data..", "geting data..wait...", true, true);
}
@Override
protected LogEntry[] doInBackground(Void... params) {
final int maxLines = 1000;
LogEntry[] logLines = SaveLogHelper.openLog(filename, maxLines);
return logLines;
}
@Override
protected void onPostExecute(LogEntry[] logLines) {
super.onPostExecute(logLines);
// 取消菊花
proDialog.dismiss();
proDialog = null;
dataSet = logLines;
arrayAdapter = new SearchLogAdapter(GTLogSearchActivity.this, dataSet);
listView.setAdapter(arrayAdapter);
}
};
openFileTask.execute((Void) null);
}
use of com.tencent.wstt.gt.log.SearchLogAdapter in project GT by Tencent.
the class GTLogSearchActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gt_log_search_activity);
handler = new Handler();
tv_count = (TextView) findViewById(R.id.log_search_count);
btn_pre = (ImageButton) findViewById(R.id.log_msg_pre);
btn_next = (ImageButton) findViewById(R.id.log_msg_next);
/*
* 用于覆盖整个屏幕的透明ImageView,
* 主要帮助点击非filterListView区域使filterListView消失
*/
img_empty = (ImageView) findViewById(R.id.log_search_view_empty);
img_empty.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
img_empty.setVisibility(View.GONE);
filterListView.setVisibility(View.GONE);
cancelFilterMsgInput(v);
break;
case MotionEvent.ACTION_UP:
v.performClick();
break;
default:
break;
}
return false;
}
});
// 过滤数据展示列表
filterListView = (ListView) findViewById(R.id.log_search_spinner_list);
// filterLock = new ReentrantLock();
filterListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long arg3) {
img_empty.setVisibility(View.GONE);
filterListView.setVisibility(View.GONE);
String sCurSelectedMsg = (String) parent.getAdapter().getItem(position);
LinkedList<String> curShowDownMsgList = GTLogInternal.getCurShowDownMsgList();
LinkedList<String> msgHistory = GTLogInternal.getCurSearchMsgHistory();
GTLogInternal.setCurSearchMsg(sCurSelectedMsg);
msgWatched = false;
et_Msg.removeTextChangedListener(msg_watcher);
String s = curShowDownMsgList.remove(position);
curShowDownMsgList.addFirst(s);
msgHistory.remove(s);
msgHistory.addFirst(s);
et_Msg.setText(sCurSelectedMsg);
btn_msg_clear.setVisibility(View.VISIBLE);
cancelFilterMsgInput(parent);
// filterLock.lock();
((MsgAdaptor) filterListView.getAdapter()).getFilter().filter(sCurSelectedMsg);
// filterLock.unlock();
doSearch(sCurSelectedMsg);
}
});
// 过滤文本
et_Msg = (EditText) findViewById(R.id.log_search_msg);
// et_Msg.setText(BHLog.getCurSearchMsg());
et_Msg.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (!msgWatched) {
et_Msg.addTextChangedListener(msg_watcher);
msgWatched = true;
}
MsgAdaptor adapter = new MsgAdaptor(GTLogSearchActivity.this);
adapter.getFilter().filter(et_Msg.getText().toString());
// filterLock.lock();
filterListView.setAdapter(adapter);
// filterLock.unlock();
if (!filterListView.getAdapter().isEmpty()) {
filterListView.setVisibility(View.VISIBLE);
img_empty.setVisibility(View.VISIBLE);
}
}
});
et_Msg.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
switch(keyCode) {
case KeyEvent.KEYCODE_ENTER:
// 要先把过滤showdown去掉,否则会多弹出一次
msgWatched = false;
et_Msg.removeTextChangedListener(msg_watcher);
String word = et_Msg.getText().toString();
filterListView.setVisibility(View.GONE);
img_empty.setVisibility(View.GONE);
cancelFilterMsgInput(v);
if (word.trim().length() == 0) {
return true;
}
LinkedList<String> curShowDownMsgList = GTLogInternal.getCurShowDownMsgList();
LinkedList<String> msgHistory = GTLogInternal.getCurSearchMsgHistory();
msgHistory.remove(word);
msgHistory.addFirst(word);
curShowDownMsgList.remove(word);
curShowDownMsgList.addFirst(word);
doSearch(word);
return true;
}
return false;
}
});
// 过滤文本的清理
btn_msg_clear = (ImageButton) findViewById(R.id.log_msg_search_clear);
btn_msg_clear.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
et_Msg.setText("");
// 清理本次搜索标记
GTLogInternal.clearLastSearchMarks();
tv_count.setText("0 / 0");
arrayAdapter.notifyDataSetChanged();
btn_msg_clear.setVisibility(View.GONE);
}
});
// 改成back功能了
btn_back = (Button) findViewById(R.id.log_msg_search_cancel);
btn_back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 20130404 改成back功能了
finish();
}
});
btn_pre.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int historySeq = GTLogInternal.getLastMatchedSeq();
if (historySeq > 0) {
GTLogInternal.setLastMatchedSeq(historySeq - 1);
listView.setSelection(GTLogInternal.getLastMatchedEntryList().get(historySeq - 1).posionInDataSet);
tv_count.setText(// 这里注意显示序号要比存储位置多1,因为从1开始算
historySeq + " / " + GTLogInternal.getLastMatchedEntryList().size());
handler.post(new Runnable() {
@Override
public void run() {
// 这个刷新需要在UI线程排队,否则会被listView.setSelection方法冲突掉
arrayAdapter.notifyDataSetChanged();
}
});
} else if (historySeq == 0 && GTLogInternal.getLastMatchedEntryList().size() > 0) {
GTLogInternal.setLastMatchedSeq(GTLogInternal.getLastMatchedEntryList().size() - 1);
listView.setSelection(GTLogInternal.getLastMatchedEntryList().get(GTLogInternal.getLastMatchedEntryList().size() - 1).posionInDataSet);
tv_count.setText(GTLogInternal.getLastMatchedEntryList().size() + " / " + GTLogInternal.getLastMatchedEntryList().size());
handler.post(new Runnable() {
@Override
public void run() {
// 这个刷新需要在UI线程排队,否则会被listView.setSelection方法冲突掉
arrayAdapter.notifyDataSetChanged();
}
});
}
}
});
btn_next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int historySeq = GTLogInternal.getLastMatchedSeq();
if (historySeq < GTLogInternal.getLastMatchedEntryList().size() - 1) {
GTLogInternal.setLastMatchedSeq(historySeq + 1);
listView.setSelection(GTLogInternal.getLastMatchedEntryList().get(historySeq + 1).posionInDataSet);
int viewSeq = historySeq + 2;
tv_count.setText(// 这里注意显示序号要比存储位置多1,因为从1开始算
viewSeq + " / " + GTLogInternal.getLastMatchedEntryList().size());
handler.post(new Runnable() {
@Override
public void run() {
// 这个刷新需要在UI线程排队,否则会被listView.setSelection方法冲突掉
arrayAdapter.notifyDataSetChanged();
}
});
} else if (historySeq == GTLogInternal.getLastMatchedEntryList().size() - 1) {
GTLogInternal.setLastMatchedSeq(0);
listView.setSelection(GTLogInternal.getLastMatchedEntryList().get(0).posionInDataSet);
tv_count.setText(// 这里注意显示序号要比存储位置多1,因为从1开始算
1 + " / " + GTLogInternal.getLastMatchedEntryList().size());
handler.post(new Runnable() {
@Override
public void run() {
// 这个刷新需要在UI线程排队,否则会被listView.setSelection方法冲突掉
arrayAdapter.notifyDataSetChanged();
}
});
}
}
});
// 准备日志列表数据
listView = (ListView) findViewById(R.id.log_search_list);
Intent intent = getIntent();
String openFileName = intent.getStringExtra("openFileName");
if (openFileName == null) {
// 日志列表
dataSet = GTLogInternal.getCurFilteredLogs();
arrayAdapter = new SearchLogAdapter(this, dataSet);
listView.setAdapter(arrayAdapter);
} else // 打开历史日志
{
openLog(openFileName);
}
}
Aggregations